Thank you for the replies!
If you were to implement your own program using his software as a reference (and not using any of his code), or even better work with someone else to create a clean-room implementation
you'd probably find few objections.
That would be a good option, and probabaly the least "questionable" way to handle it. That would of course require a proper understanding of how Riveal's internal code works, and I'm nowhere close to that right now. I'm just at the point where the decompiled code is runnable, and I haven't even tested much more than simply starting the application and clicking around in the menus.
Sirius wrote:I've always wished we had an open source library for reading Myst4 archives.
FWIW, Ron Hayter also wrote a second tool, Revelator
, which is essentially a version of Riveal specialized to Myst IV. I've never used it myself, but the main difference seems to be that Riveal extracts absolutely every image from the game files, whereas Revelator tries to filter out any files that are not "interesting" to most people - textures related to graphics effects and such.
His website also hosts the Myst 4 Viewer
by Nathan Gilbert aka Tahgtahv. The name should be self-explanatory, though I haven't tried that one myself either.
Sirius wrote:I wouldn't have time to work on it right now, but my hope is that one day we can recode the engine to support more OS and have the game render in higher res etc. Maybe even add VR support.
Theoretically you could write your own engine that uses the image files produced by Riveal, and then extend it to load the real game files later.
Sirius wrote:At some point I tried decompiling the sources of Riveal, but didn't manage to do much with it. I don't remember exactly, but I think some of the variable names were lost or something.
Decompiling Java bytecode usually isn't too bad - the only things that get lost by default are what is optimized away by the compiler. The regular compiler from the Oracle JDK only does very simple optimizations, like inlining/folding constant expressions and removing if (false) branches, so not much is lost.
Unfortunately all versions of Riveal that I know of have also been obfuscated. This means that all non-essential metadata (local variable names, line number tables, generics info) is removed, and most classes/methods/fields are renamed to a, b, c, ... instead of the original names. This obfuscator is particularly "funny" and sometimes uses Java keywords (if, else, while, do, for, ...) as names. This is not a problem in compiled code, but makes any decompiled code invalid at first. Nothing that can't be fixed with lots of find-replace though.