Page 1 of 4

observed diffrences between urucc and mystv

PostPosted: Fri Dec 03, 2021 12:48 pm
by jfmherokiller
This will be an attempt at compiling all the differences I can find between the uruCC engine and mystv. I may also add workarounds for each part as well.
Feel free to add something I may have missed.

ptAttribGlobalSDLVar

Myst seems to use this function ALOT yet it is completely absent from uru.

Code: Select all
class ptGUISketchControl(ptGUIControl):


this native (as in the code is part of the exe of the game) class in mystv does not exist in uru.

A plugin or python based fix would be needed to make the sketch control work.

PtGetGlobalSDL

this function is also missing from uru.

For the 2 global functions it may be possible to make use of the player personal sdl (eg personal.sdl) (eg Relto state sdl). The reasoning behind this is because as far as I can tell the Relto sdl is the closest analog to mystvs global state sdl.

Re: observed diffrences between urucc and mystv

PostPosted: Fri Dec 03, 2021 12:58 pm
by jfmherokiller
did some research on the sketch control class and I was able to extract some info from ida pro https://pastebin.com/0TUUiadY

Re: observed diffrences between urucc and mystv

PostPosted: Fri Dec 03, 2021 4:10 pm
by Sirius
Happy coincidence, I've spent the evening working on MystV-on-Uru related stuff.
*cough* *cough* Drizzle33 *cough*

On the API side, there are a couple more differences - mostly functions that were renamed (like OnServerInitComplete) or completely replaced/added. Comparing the decompiled MV Python scripts to the converted versions shipped with Drizzle32 should provide a lot of info on the most common differences.

jfmherokiller wrote:ptAttribGlobalSDLVar

Easily replaced with ptAttribString and PtGetAgeSDL() for the most part. The only exception as you noted are SDLs that are accessed across Ages. One solution is to store them in Personal/Relto like Ahnonay does. Another is to access another Age's SDL via the Vault, but it's not compatible with PtGetAgeSDL() - for some reason, they return different records. Both solutions can still be used if you're careful, but they are kinda ugly/hackish and unreliable in my opinion. Hence why I simply avoided any cross-Age SDL access in the Drizzle32 version.

jfmherokiller wrote:ptGUISketchControl

Not worth the trouble IMHO. Even if you could get sketch recognition working, this would only open a huge can of worms, which is making the Slates and Bahros behave together. Uru doesn't want objects moving across Ages or being picked up by players, and you can't spawn or animate Bahro NPCs either.
IMHO it's best to not bother with story elements like these. They rely on the engine too much, and at that point you're better off booting Myst V anyway. But that's just my opinion, of course.
With that said, it's possible to get some sort of GUI drawing working in Uru. The.Modificator did it in his Tawah (?) Age. Could be used for fun stuff in fan Ages, but setting it up appears to be tough...

On the PRP side, a huge number of object types were either added or modified. Those require a huge number of workarounds to get them to work semi-reliably on PotS.

Re: observed diffrences between urucc and mystv

PostPosted: Sat Dec 04, 2021 2:01 am
by jfmherokiller
Sirius wrote:Happy coincidence, I've spent the evening working on MystV-on-Uru related stuff.
*cough* *cough* Drizzle33 *cough*

On the API side, there are a couple more differences - mostly functions that were renamed (like OnServerInitComplete) or completely replaced/added. Comparing the decompiled MV Python scripts to the converted versions shipped with Drizzle32 should provide a lot of info on the most common differences.

jfmherokiller wrote:ptAttribGlobalSDLVar

Easily replaced with ptAttribString and PtGetAgeSDL() for the most part. The only exception as you noted are SDLs that are accessed across Ages. One solution is to store them in Personal/Relto like Ahnonay does. Another is to access another Age's SDL via the Vault, but it's not compatible with PtGetAgeSDL() - for some reason, they return different records. Both solutions can still be used if you're careful, but they are kinda ugly/hackish and unreliable in my opinion. Hence why I simply avoided any cross-Age SDL access in the Drizzle32 version.

jfmherokiller wrote:ptGUISketchControl

Not worth the trouble IMHO. Even if you could get sketch recognition working, this would only open a huge can of worms, which is making the Slates and Bahros behave together. Uru doesn't want objects moving across Ages or being picked up by players, and you can't spawn or animate Bahro NPCs either.
IMHO it's best to not bother with story elements like these. They rely on the engine too much, and at that point you're better off booting Myst V anyway. But that's just my opinion, of course.
With that said, it's possible to get some sort of GUI drawing working in Uru. The.Modificator did it in his Tawah (?) Age. Could be used for fun stuff in fan Ages, but setting it up appears to be tough...

On the PRP side, a huge number of object types were either added or modified. Those require a huge number of workarounds to get them to work semi-reliably on PotS.


Tbh I did want the sketch part working at least in part. I could see it possibly being useful in the ki when taking snapshots. Also As a bonus for these investigations I'm sharing self generated map files and pdbs for eoa and uruExplorer.exe

Will be in separate replies because it seems I hit request size limit

Re: observed diffrences between urucc and mystv

PostPosted: Sat Dec 04, 2021 2:03 am
by jfmherokiller
myst 5 pdb and map

eoa.exe md5 : AFDD5C70796F85B425BD3AD37B7DE8EE

special notes : gog release

Re: observed diffrences between urucc and mystv

PostPosted: Sat Dec 04, 2021 2:11 am
by jfmherokiller
uruexplorer.exe md5 : D8FB17D5E81212721BA9D51FAF15F31A

Special notes gog release with 2020 cdcrack from drizzle32

Re: observed diffrences between urucc and mystv

PostPosted: Sat Dec 04, 2021 8:40 am
by Maroonroon
jfmherokiller wrote:self generated map files and pdbs for eoa and uruExplorer.exe
[...]
myst 5 pdb and map

eoa.exe md5 : AFDD5C70796F85B425BD3AD37B7DE8EE

special notes : gog release

uruexplorer.exe md5 : D8FB17D5E81212721BA9D51FAF15F31A

Special notes gog release with 2020 cdcrack from drizzle32

Hello;
I don't understand what are "self generated map files" and "pdbs", please, can you explain me a little, please?
And what is the cdcrack? Is it the NoCD? If it is, isn't it redondant as the GOG release already have a NoCD ?

Re: observed diffrences between urucc and mystv

PostPosted: Sat Dec 04, 2021 10:53 am
by jfmherokiller
Maroonroon wrote:
jfmherokiller wrote:self generated map files and pdbs for eoa and uruExplorer.exe
[...]
myst 5 pdb and map

eoa.exe md5 : AFDD5C70796F85B425BD3AD37B7DE8EE

special notes : gog release

uruexplorer.exe md5 : D8FB17D5E81212721BA9D51FAF15F31A

Special notes gog release with 2020 cdcrack from drizzle32

Hello;
I don't understand what are "self generated map files" and "pdbs", please, can you explain me a little, please?
And what is the cdcrack? Is it the NoCD? If it is, isn't it redondant as the GOG release already have a NoCD ?


By self generated I mean I made them myself using tools at my disposal.

and for the cdcrack I mean I chose this option in drizzle32 Image

Re: observed diffrences between urucc and mystv

PostPosted: Sat Dec 04, 2021 11:59 am
by Maroonroon
jfmherokiller wrote:
Maroonroon wrote:I don't understand what are "self generated map files" and "pdbs", please, can you explain me a little, please?


By self generated I mean I made them myself using tools at my disposal.

Thank you for your answer. But I still don't don't understand what is a map file for? What's his purpose? Also for the pdb file?
Or at least, what are YOUR map and pdb files for?

jfmherokiller wrote:
Maroonroon wrote:what is the cdcrack? Is it the NoCD? If it is, isn't it redondant as the GOG release already have a NoCD ?
for the cdcrack I mean I chose this option in drizzle32

So yes, it's redondant; if you have the GOG version of "Uru CC" you don't need to install the "Official No-CD Patch". Or only if you want the "Beta Patch" from Chogon, but you can have this Beta Patch without having to install the No-CD Patch.

Re: observed diffrences between urucc and mystv

PostPosted: Sat Dec 04, 2021 1:02 pm
by Paradox
Maroonroon wrote:
jfmherokiller wrote:
Maroonroon wrote:I don't understand what are "self generated map files" and "pdbs", please, can you explain me a little, please?


By self generated I mean I made them myself using tools at my disposal.

Thank you for your answer. But I still don't don't understand what is a map file for? What's his purpose? Also for the pdb file?
Or at least, what are YOUR map and pdb files for?


.map and .pdb files provide information about where functions and data structures are located in the compiled .exe binary file, and are useful for debugging and reverse engineering.

I don't think anyone's taken a very detailed look at Myst V disassembly since 2005, but IIRC there was a PowerPC Mac demo version that had all the unmangled function names available (although it's PPC asm). A lot of early work to build tools for Uru (and other Plasma versions) was the result of reverse engineering with tools like IDA. Nice to see someone showing interest in picking up a lost craft ;)

A few things about Myst V:
The biggest difference from Uru is that it's a totally offline game, and all the networking code was removed. Things like the Vault don't exist, and were replaced with offline save files. The SDL system still exists but was overhauled pretty significantly.
The sketching and neural net pattern recognition systems for the Slate do not exist in Uru, along with some of the shader effects for things like the bubbles (although the grass shader was later ported to the MOUL version of the engine).