Monday, August 23, 2010

Riven Easter Egg Plus

Well, I'm sure anyone that has played Riven has at least heard of the massive easter egg system that is in there. (Yes, this will work in ScummVM :P). I was checking some scripts in Riven because there are some other hotspots that will make the cursor disappear in the original game but weren't really attached to the easter egg. Richard Watson ("RAWA") even said that they weren't related to the easter egg. Well, it seems that they were originally going to be part of the game, but were cut out - and the scripts prove it.



The first of the hotspots, is the one above the cage. When clicking on the hotspot, this code runs:

switch (tdl) {
case 2:
tdl = 3;
break;
default:
tdl = 0;
break;
}

Unfortunately, all the other hotspots set tdl to 0, so the variable can never truly be set here. Not to mention tdl is also not set to 2 anywhere. (EDIT: See below)

Now for the Cho hotspots. It seems it was intended to have you click the hotspots in a specific order after tdl is set to 3 (from the above code segment). I have labeled them in the correct order here:



The hotspots labeled 1-6 will increase tdl by one if pressed in the right order. When you press the last hotspot, this segment of code is run:

switch (tdl) {
case 9:
araw = 4;
break;
}
tdl = 0;

araw is the variable used for the main Riven easter egg variable! aova is the other one. araw is normally set to 4 when you click the hotspot above the elevator on Garden Island:



So, it seems that this content was cut and replaced by the elevator hotspot. Or it could be that they changed the whole easter egg structure after having this initial "Cho code" in there.

(NOTE: The green/red rectangles are part of the hotspot debugging mode I added to the engine in ScummVM. Green = enabled, red = disabled)

EDIT: Well, turns out there's another piece of the puzzle. Clicking on the jammed lever outside of the cage in the beginning runs this code:

switch (tdl) {
case 1:
tdl = 2;
break;
default:
tdl = 0;
break;
}

Maybe there's a place where tdl is set to 1? The mystery continues!

6 comments:

Trevor said...

Hi,

I recently got the ScummVM app for Android and I am very interested in running Myst and Riven on it. information is kinda fragmented on forums and I eventually found your blog.

So can I run Myst and riven on my Scummvm emulator which was ported to my Android phone? I saw it was a goal of yours to finish both this year. Wondering if they are complete or not

clone2727 said...

Hi Trevor,

I am not sure of the status of the Android app and if it can handle the 16bpp graphics. I have an Android phone (writing from it now, actually) and hope to test it eventually.

As for the status of Myst and Riven, I hope to have a blog post about it soon with some good news :)

Trevor said...

Thank you for your reply.

My N1 can play Quake 3 (online support to for mulitplayer :P)

and loads of PSX games (Myst crashes because of a CDDA audio bug which is not supported on the PSX emulator yet)

So i am sure the phone can handle it. It would probably be an issue of plugins and such. I am running the ScummVM app

You cannot get it in the marketplace for 2.0 + yet but you can download the .apk beta file. I am running Day of the Tentacle on it at full speed

Looking forward to your releases.

It would help because Riven and Myst are smaller this way as opposed to PSX ISOs or eboots

clone2727 said...

I know the phone can handle it, but the ScummVM backend still has to support 16bpp. I do not know what capabilities the Android ScummVM backend has. There is a beta version for 2.0+ on the forums, did you try that? (If it has the Mohawk plugin)

Trevor said...

Yeah I have the 2.0 version. It works great. How would I know if it has the mohawk plugin?

Anthony817 said...

Hello! Very impressive what you have done with Myst on ScummVM!

Do you know if it will run on the Dreamcast version of ScummVM or is this game to powerfull for it?