Myst is great and Riven: The Sequel to Myst is even better!
However, Myst has many bad ports, even has Nintendo DS and 3DS port and 3DS port isn't 3D!?!?! There is Myst: Masterpiece Edition, realMyst, realMyst: Masterpiece Edition. Overall, Myst and Myst: Masterpiece Edition best. I think original Myst is #1.
Riven works fullscreen in W10 x64 but many want windowed, but not possible with DxWnd. Please help, thx!
Also, Myst 10th Anniversary Collection has Riven DVD, but this DVD version is diferent than original Riven DVD version. I think Riven DVD in Myst 10th Anniversary Collection might have updated installer and EXEs.
Thx!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've begun to deal with Riven original 5CD version.
The first problem is how to install the game. The original installer is 16bit, so it will never work on 64bit platforms. Here's the how-to:
1) copy the content of the whole first CD on a folder of the hard disk (don't worry, it's just temporary)
2) copy setup32.exe (you can download it from ReactOS site, but I'll put a copy on next DxWnd releases) in the same folder
3) run setup32.exe to install the game and the QT that is included. Thar version of QT seems necessary, also if you have a more recent installed already
4) delete the folder, it is no longer useful.
The game runs fullscreen on Win7 64bit. It runs also windowized with DxWnd, but it has some peculiarities that I never met before and that are causing some problems that need a fix. Mostly it blits through GDI and makes use of Wieports and the coordinate system (SetWindowExt, SetWindowOrg, ..) that are not properly patched. But if anyone wants a preview, the problems are not visible running the game at 0,0 size. The screenshots below are taken at default 800x600 window size and show some bad scaling and image overlappings.
I believe the screenshots can be taken from latest release, but there's no point in making tests now because I've found several places needing fixes and I'm doing them right now. You'll get a test release as soon as the results will approach to something ok.
Thank you for signaling this game: despite the similarities with a lot of other games, I found that it is using quite different techniques to get system info, create a device context, blit graphic on screen and so on. I think the fixes will greatly improve DxWnd compatibility with GDI games.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Some progress, finally, but it's just a first step, it will take longer to complete.
After a lot of analysis and attempts, I got the cause of the bad clipping: it was necessary to hook the GDI SetRectRgn and IntersectClipRect calls scaling the clipping coordinates.
Now the game starts in GDI scaled mode. The screenshots seem very good, but in reality there's a lot of flickering in the movies and, worse than that, there are still some imprecisions that may impact on the game solution (see last screenshot: the pressed buttons are not drawn correctly!).
The game in emulated device context mode has less flickering, but other problems, the worse of all it blocks as soon as the game starts!
One step at a time, we'll manage this game.
Riven is a wonderful game, but one wouldn't expect such a complexity in the rendering engine! One of the main problems is that QT libraries manage graphics by their own and the fixed graphic (rendered directly through ddraw or GDI) and the QT animations have displacements. See for instnce the bugged "bug"! ...
But though slowly, I'm making progresses. Also, I'm working on another masterpiede: Reah (this will deserve a separate thread).
I just discovered an annoying thing: when Riven asks for a CD change, it closes all opened files, including the DxWnd logfile causing the game crash.
The workaround is to run the game with no logs (just uncheck the flags in the log tab, as they are by default). I'll try to catch this exception and make a better patch to keep having logs active also in this case.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, catch exception and reopen log file when closed, but I don't know how to detect when CD change screen is over. Generic solution is best if other games do this too.
Let me know how I can help. Also, have you tested Fallout 1 for regression? Thx!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It's a damn'd problem: I spent several hours trying to find a general way to avoid crash on logfile close, but it seems a hard task. try except doesn't work, so hooking CloseHandle and skipping the logfile handle. So far, the only reliable way to get into troubles is to turn logs off.
BTW there's a specific log message that causes troubles (a GetWindowLong trace), likely because it is related to the only activity that gets repeatedly logged while the game is unmounting the CDs. Commenting that log out provide good results as well.
Fallout 1 will have to wait a little, I hate having too many unfixed things around.
Last edit: gho 2015-10-19
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi gho, 1st post has all info. I hope you can get it working. I think I had to 1st run Riven DVD w/o DxWnd and configure. Please update when you can. Thx!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've desperately being trying to windowize Riven DVD version, but it crashes in a couple of points and for no apparent good reason. It seems that Riven developers introduced some sort of anti-cheating code within the exe (maybe not intentionally, but it works like that ...) so that all I can get, no matter how I reduce the level of DxWnd interference, is a crash before the first screen.
So, in conclusion, I switched to DVD version because more recent and, hopefully, with less problems, just to discover it's the exact opposite.
I'm not surrending, but for sure a positive result doesn't seem anywhere near.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Scary news: I think I've got the reason why Riven is so hard to patch and manage: it uses API and COM hooking internally!!! I've found in the assemply code places where it redirects the standard libraries calls, and this is very bad when the task is hooked again by an external program like DxWnd. This maybe explains why things were so simpler in the original CD version, where probably the internal hooking was not present.
Technically speaking, the problem is the following: when you hook the call, you replace its address with that of a hooker routine that, in turn, calls the original call internally.
When you do this trick twice, the result can easily be address 0, that causes an immediate crash and, worse than this, doesn't leave a trac in the stack for a debugger to analyze the problem. It took hours of debugging to insulate where the problem occurred, now I know where, but I still don't know how to repair ....
Worse of all, and I hope to be wrong, I bet that the other River releases (GOG and Steam) are internally patched as well!
Last edit: gho 2015-11-11
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Good news today. At least, partially ....
Sick and tired of the game crashing, I tried to wipe out the self-patching code from within the exe assembly. You can skip the whole dangerous section by means of a single byte change (JMP instead of JZ assembly) and, guess what?, nothing too bad happened. On the contrary, the patched exe works seemingly well both with and without DxWnd, and also doesn't show the graphic glitches of its predecessor of the multi-CD release. Have a look at the pictures, aren't they beautiful?
So, now I just have two concerns:
1) you can't hook the regular game distribution, but you have to patch it somehow
2) there's a possibility that the skipped assembly code is useful and I'm still missing to what.
But at least I'm no longer blocked.
In case anyone has the DVD version and is interested in testing it, here is the patched exe.
It would be interesting to know if the patch has unwanted side effects.
It looks that another small DxWnd addition is needed to keep the window menu bar attached to the main window, istead of sticking to 0,0 coordinates at top-left desktop corner.
Here's the latest patch.
Hi gho, thank you for this progress, please don't give up on Riven because in W10 x64 still issues.
I use v2.03.45 with dxwnd.dll and default settings with Prevent Win Max.
1) Window is not movable
2) Orig EXE QT movies play with crackle sound, but good sound during actual game
3) Patched EXE QT movies have frozen screen with crackle sound, but good sound during actual game
4) Orig EXE crashes when not in foreground
5) Patched EXE does not crash
6) Fixed DLL doesn't fix menu bar in W10x64
7) With no DxWnd, On W10x64 Riven works with good sound with WXPSP2 & Admin compat settings
Crackle sound doesn't matter as much until other issues resolved.
Thx!
Last edit: XD Gamer 2015-11-15
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
About 1)
It will be difficult to make the window moveable, since it is composed by different pieces not glued together: I'm referring to the menu bar that appears when you press the Alt key. It's not a child window ot the main window, so moving the main window won't move the menu. It's annoying ....
I have another problem with Riven DVD edition: I can't get movies or animations no longer, no matter if I use DxWnd or not. You could live (maybe) without movies, but not without all animations! I should have something wrong with QT settings. What a nuisance!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This is exactly my problem: in Riven DVD edition the QT movies are not working (that is, skipped in zero time) with and without DxWnd, and also with and without the patch!
I was able to see the movies just with the CD version.
Since this happened right after a clean start of the DVD version, I can't blame DxWnd: likely it's a QT mess left on my pc after the tests with the CD version. I have to make some deep cleaning!!!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Not yet. I had a hell of real work (I mean, at the office), so I minded easier tasks. For Riven, I have to clean up my pc getting rid of any trace of QT stuff and then find a way to have an installed version WITH movies. Only then, when the game will work fullscreen without DxWnd, I could start the windowizing job ...
I think I could start soon.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Finally I got some patch to make visible the Riven DVD edition movies. The game is not working this way (it's just to likely to crash after a few seconds ...) but it's a progress in any case.
Myst is great and Riven: The Sequel to Myst is even better!
However, Myst has many bad ports, even has Nintendo DS and 3DS port and 3DS port isn't 3D!?!?! There is Myst: Masterpiece Edition, realMyst, realMyst: Masterpiece Edition. Overall, Myst and Myst: Masterpiece Edition best. I think original Myst is #1.
Riven works fullscreen in W10 x64 but many want windowed, but not possible with DxWnd. Please help, thx!
http://fix-my-game.blogspot.com/search/label/Riven
It might help to edit riven.usr and add (this also can be done through hidden GUI Menu Bar)
[ScreenInfo]
fKeepUserRes=true
More Riven troubleshooting and patches:
http://www.mystcommunity.com/board/index.php?/topic/22887-technical-faq-for-myst-games/pagep322776#entry322776
http://pcgamingwiki.com/wiki/Riven
Also, Myst 10th Anniversary Collection has Riven DVD, but this DVD version is diferent than original Riven DVD version. I think Riven DVD in Myst 10th Anniversary Collection might have updated installer and EXEs.
Thx!
I've begun to deal with Riven original 5CD version.
The first problem is how to install the game. The original installer is 16bit, so it will never work on 64bit platforms. Here's the how-to:
1) copy the content of the whole first CD on a folder of the hard disk (don't worry, it's just temporary)
2) copy setup32.exe (you can download it from ReactOS site, but I'll put a copy on next DxWnd releases) in the same folder
3) run setup32.exe to install the game and the QT that is included. Thar version of QT seems necessary, also if you have a more recent installed already
4) delete the folder, it is no longer useful.
The game runs fullscreen on Win7 64bit. It runs also windowized with DxWnd, but it has some peculiarities that I never met before and that are causing some problems that need a fix. Mostly it blits through GDI and makes use of Wieports and the coordinate system (SetWindowExt, SetWindowOrg, ..) that are not properly patched. But if anyone wants a preview, the problems are not visible running the game at 0,0 size. The screenshots below are taken at default 800x600 window size and show some bad scaling and image overlappings.
Last edit: gho 2015-10-11
Hi gho, is DxWnd version released for test? Thx for all the excellent progress!
I believe the screenshots can be taken from latest release, but there's no point in making tests now because I've found several places needing fixes and I'm doing them right now. You'll get a test release as soon as the results will approach to something ok.
Thank you for signaling this game: despite the similarities with a lot of other games, I found that it is using quite different techniques to get system info, create a device context, blit graphic on screen and so on. I think the fixes will greatly improve DxWnd compatibility with GDI games.
Some progress, finally, but it's just a first step, it will take longer to complete.
After a lot of analysis and attempts, I got the cause of the bad clipping: it was necessary to hook the GDI SetRectRgn and IntersectClipRect calls scaling the clipping coordinates.
Now the game starts in GDI scaled mode. The screenshots seem very good, but in reality there's a lot of flickering in the movies and, worse than that, there are still some imprecisions that may impact on the game solution (see last screenshot: the pressed buttons are not drawn correctly!).
The game in emulated device context mode has less flickering, but other problems, the worse of all it blocks as soon as the game starts!
One step at a time, we'll manage this game.
Last edit: gho 2015-10-12
Screenshots very good and exciting, maybe save this change for next major upgrade, I can wait. Thx!
Riven is a wonderful game, but one wouldn't expect such a complexity in the rendering engine! One of the main problems is that QT libraries manage graphics by their own and the fixed graphic (rendered directly through ddraw or GDI) and the QT animations have displacements. See for instnce the bugged "bug"! ...
But though slowly, I'm making progresses. Also, I'm working on another masterpiede: Reah (this will deserve a separate thread).
Hi gho, Riven screenshots great! Excellent! Will wait for support.
Update on 11th Hour? And pls see The X-Files Game...
I just discovered an annoying thing: when Riven asks for a CD change, it closes all opened files, including the DxWnd logfile causing the game crash.
The workaround is to run the game with no logs (just uncheck the flags in the log tab, as they are by default). I'll try to catch this exception and make a better patch to keep having logs active also in this case.
Thx for update!
Yes, catch exception and reopen log file when closed, but I don't know how to detect when CD change screen is over. Generic solution is best if other games do this too.
Let me know how I can help. Also, have you tested Fallout 1 for regression? Thx!
It's a damn'd problem: I spent several hours trying to find a general way to avoid crash on logfile close, but it seems a hard task. try except doesn't work, so hooking CloseHandle and skipping the logfile handle. So far, the only reliable way to get into troubles is to turn logs off.
BTW there's a specific log message that causes troubles (a GetWindowLong trace), likely because it is related to the only activity that gets repeatedly logged while the game is unmounting the CDs. Commenting that log out provide good results as well.
Fallout 1 will have to wait a little, I hate having too many unfixed things around.
Last edit: gho 2015-10-19
It's very good to fix CD change file close bug, however, Riven was released on DVD. Maybe test to see if this bug occurs on DVD version? Thx! =)
Hi gho, 1st post has all info. I hope you can get it working. I think I had to 1st run Riven DVD w/o DxWnd and configure. Please update when you can. Thx!
I've desperately being trying to windowize Riven DVD version, but it crashes in a couple of points and for no apparent good reason. It seems that Riven developers introduced some sort of anti-cheating code within the exe (maybe not intentionally, but it works like that ...) so that all I can get, no matter how I reduce the level of DxWnd interference, is a crash before the first screen.
So, in conclusion, I switched to DVD version because more recent and, hopefully, with less problems, just to discover it's the exact opposite.
I'm not surrending, but for sure a positive result doesn't seem anywhere near.
Scary news: I think I've got the reason why Riven is so hard to patch and manage: it uses API and COM hooking internally!!! I've found in the assemply code places where it redirects the standard libraries calls, and this is very bad when the task is hooked again by an external program like DxWnd. This maybe explains why things were so simpler in the original CD version, where probably the internal hooking was not present.
Technically speaking, the problem is the following: when you hook the call, you replace its address with that of a hooker routine that, in turn, calls the original call internally.
When you do this trick twice, the result can easily be address 0, that causes an immediate crash and, worse than this, doesn't leave a trac in the stack for a debugger to analyze the problem. It took hours of debugging to insulate where the problem occurred, now I know where, but I still don't know how to repair ....
Worse of all, and I hope to be wrong, I bet that the other River releases (GOG and Steam) are internally patched as well!
Last edit: gho 2015-11-11
Good news today. At least, partially ....
Sick and tired of the game crashing, I tried to wipe out the self-patching code from within the exe assembly. You can skip the whole dangerous section by means of a single byte change (JMP instead of JZ assembly) and, guess what?, nothing too bad happened. On the contrary, the patched exe works seemingly well both with and without DxWnd, and also doesn't show the graphic glitches of its predecessor of the multi-CD release. Have a look at the pictures, aren't they beautiful?
So, now I just have two concerns:
1) you can't hook the regular game distribution, but you have to patch it somehow
2) there's a possibility that the skipped assembly code is useful and I'm still missing to what.
But at least I'm no longer blocked.
In case anyone has the DVD version and is interested in testing it, here is the patched exe.
It would be interesting to know if the patch has unwanted side effects.
It looks that another small DxWnd addition is needed to keep the window menu bar attached to the main window, istead of sticking to 0,0 coordinates at top-left desktop corner.
Here's the latest patch.
Last edit: gho 2015-11-13
Hi gho, thank you for this progress, please don't give up on Riven because in W10 x64 still issues.
I use v2.03.45 with dxwnd.dll and default settings with Prevent Win Max.
1) Window is not movable
2) Orig EXE QT movies play with crackle sound, but good sound during actual game
3) Patched EXE QT movies have frozen screen with crackle sound, but good sound during actual game
4) Orig EXE crashes when not in foreground
5) Patched EXE does not crash
6) Fixed DLL doesn't fix menu bar in W10x64
7) With no DxWnd, On W10x64 Riven works with good sound with WXPSP2 & Admin compat settings
Crackle sound doesn't matter as much until other issues resolved.
Thx!
Last edit: XD Gamer 2015-11-15
About 1)
It will be difficult to make the window moveable, since it is composed by different pieces not glued together: I'm referring to the menu bar that appears when you press the Alt key. It's not a child window ot the main window, so moving the main window won't move the menu. It's annoying ....
I have another problem with Riven DVD edition: I can't get movies or animations no longer, no matter if I use DxWnd or not. You could live (maybe) without movies, but not without all animations! I should have something wrong with QT settings. What a nuisance!
Hi gho, QT movies work with and without DxWnd, but with original non-patched EXE and quicktime.qts.
Can you look into getting the original non-patched EXE to work with DxWnd and not crash when in background?
How can I help with this? Thx!
This is exactly my problem: in Riven DVD edition the QT movies are not working (that is, skipped in zero time) with and without DxWnd, and also with and without the patch!
I was able to see the movies just with the CD version.
Since this happened right after a clean start of the DVD version, I can't blame DxWnd: likely it's a QT mess left on my pc after the tests with the CD version. I have to make some deep cleaning!!!
Any updates?
Not yet. I had a hell of real work (I mean, at the office), so I minded easier tasks. For Riven, I have to clean up my pc getting rid of any trace of QT stuff and then find a way to have an installed version WITH movies. Only then, when the game will work fullscreen without DxWnd, I could start the windowizing job ...
I think I could start soon.
Finally I got some patch to make visible the Riven DVD edition movies. The game is not working this way (it's just to likely to crash after a few seconds ...) but it's a progress in any case.