Tuesday, April 02, 2013

I'm not dead! I feel happy!

It's been so long since the last post that Blogger completely changed their editing interface (OK, not really a joke since Google seems to change their GUI with everything at regular intervals to confuse the public at large).

A few things for this update:

1) The Journeyman Project: Pegasus Prime is now supported in daily builds of ScummVM. Rejoice! And stay tuned for more news!

2) ScummVM April Fools Jokes™ will return next year with a vengeance (blame DrMcCoy, probably).

3) If you're able to recall when posts happened more regularly than yearly, you might remember this post, which I followed up saying I uploaded modified ScummVM code to a branch. Then last year I wrote a small player for the videos so I didn't have to hack directly in ScummVM anymore -- and then added support for Outlaws (proper 1/4 sized raw frames), Mysteries of the Sith, and (partially) Rebel Assault SegaCD.

LordHoto's favorite level (Sega CD version)
Mysteries of the Sith, Level 1 Opening
Oh, and I apologize if your comment didn't show up over the past few months. I screwed up with the admin settings on the blog and it never forwarded me e-mails! Sorry!

Thursday, April 12, 2012

Getting Pegasus to Run in ScummVM

The Journeyman Project: Pegasus Prime is very much a Mac game. And by that, I mean it uses the gamut of Mac resources it has available to it. Thus, it can be very hard to extract the data on a non-Mac system. This post is an attempt to document some sane way for everyone to play the game in ScummVM. I'll also update this as people give me more info since some information is not provided by myself. Much thanks to eriktorbjorn for his file list and his Linux extraction script. This is all assuming you can compile the source code at the "pegasus" branch of my github fork already.

Extracting the Full Game Data
Since this is different on different platforms, I shall cover the big three here.

Windows
For Windows you need to use either the HFVExplorer or HFSExplorer tools.

If you're using HFVExplorer, you'll want to dump the files according to this document. If you see "M" on a line, make HFVExplorer extract as MacBinary and as a "raw copy, data fork" for ones beginning with "R". Note that you'll have to rename any file or directory with "/" in the name to have an underscore ("_") in its place.

For HFSExplorer, you can pretty much use the same instructions as HFVExplorer, except that you want to extract AppleDouble instead of MacBinary.

Mac OS X
Extracting the data on a Mac is actually the easiest because a) you can use HFS drives directly and b) you can then run the game directly without changing any file names.

First thing you'll need to do is to enable hidden folders. Then merge the PP Data folders from all four discs into one folder on your hard drive. Any files with the same name are identical. That's it, you're done. You can also use the "macbinary" command line tool to make MacBinary versions of the files.

Linux
You'll need to have hfsutils installed on Linux. Then you should run this script provided by eriktorbjorn with this file list (pasted into a file called "filelist.txt"). It should be pretty self-explanatory to run beyond that, I hope.

Extracting the Demo Data
Since StuffIt is a completely awful tool that won't let you extract any of the resource fork data on a non-Mac system, you will have to wait until I upload a version of the demo that can be played with ScummVM directly. Mac users can use it pretty much right away. I will update this space as soon as possible with more details. Sit tight!

Monday, April 02, 2012

About Face

A quick follow-up to my last post: the code is now online.

Filler Post

While I'm sure you're all waiting for a Pegasus Prime update, something completely useless will have to do in the meantime. Hopefully there will be a real update soon, stayed tuned! You can only get a sneak peek by seeing my tool for allowing games made in ScummVM to be played in the original interpreter again. In the meantime, you can hopefully appreciate the fact that you can now properly hear Gehn singing in Riven.

Some more exciting news: I was able to grab a copy of the ultra-rare Return to Zork Macintosh MPEG edition. Pretty much the same as the regular Mac version (and just as unsupported) but with a new MPEG-2 video layer of fun added on top. One day I'll finish RE'ing all those exotic versions of the game.

Speaking of which, I wrote PSX stream decoder for use in Broken Sword 1 and 2 (and Return to Zork) so now one can play those videos in all their half-resolution glory. I know, you're all very excited!

Switching gears.... For the one of you that may be interested, we did have a third idea for April Fools' this year that was replaced by the C# port joke. I came up with this idea after playing through Gabriel Knight: Sins of the Fathers last year and it manifested itself in a photoshop that I happened to like enough to not just outright toss out.

Originally, there would have been a whole set of "advertisements in ScummVM" -- advertisements placed right into the games! The plan was going to insert a few things in such as making the soda machine in The Secret of Monkey Island a real Coca-Cola machine and using the pre-made "advertisement" of Foster's in a Beneath a Steel Sky.

Only one prototype was made of GK1, and hopefully someone out there gets the joke.

Thursday, December 15, 2011

Reminiscing

Well, hello there. Been a few months since I posted here. Figured I'd post about something, y'know.

Had a busy summer... busy fall too. Played a few games recently, including one classic game -- The Journeyman Project: Pegasus Prime. Let's reminisce a bit (WARNING: Contains spoilers; just skip to the very bottom for the good stuff).


The essential title screen; usually in most games. Let's move onto gameplay.


We should probably wake up, and not be late for work.


Too late! The commissioner doesn't look too happy. Also, bad temporal rip incoming and whatnot.


Time to go recover that log and not jump off the cliff though!


Avoid dinosaurs too, always good. Let's go to Mars instead.


Watch out! (Aside: For fun, you can try to attack this guy with any inventory item -- I bet you didn't know that!)


Freeze the lock, let's take a look at that bomb. Don't just pry it out though! Now, let's get out of here.


The maze isn't the same without the original music, but it's still enjoyable. Let's go catch that robot!


Bang bang! Pew pew! Now, tractor her in and board her!


Need to stop a robot down under too.


Being under the sea more to your liking? This guy doesn't seem to think you're much of a match for him, though. Probably should stay out of his way or maybe crush him or something.


I hope you don't need a map to solve this one.


Watch out! Robot on the loose!


Who needs lockpicks? Let's just blow the door open.


Why are there no tasers in the future?


How come James Bond never had to go through this level of difficulty when diffusing a bomb?


Mission Accomplished!


















Well, that was a fun little aside don't you think! Talking about a classic adventure game randomly, just like that. Or was it really random? Maybe there's something common about those screenshots; no, not just in PNG format. They're all taken from within ScummVM. Yeah, you heard correctly. This is definitely happening, and I'll hopefully be done fairly soon. Ah, now you see what I'm getting at? There's still some graphical glitches with the videos, but it's in very good shape overall.

Oh and it's even completable.

More updates to come soon (And no, this code isn't on my github account yet, but will be soon).

And, of course, much thanks to Presto Studios for making all this possible and providing the original source code!

Friday, June 17, 2011

Mac SCI1.1+ Games Update

I really should update here more :P

In an effort to catch up with stuff I've missed, I'll start by going over stuff I coded a few months ago. Remember last year when I wrote up two posts about SCI Mac code? Well, I don't. So, here's two links from last summer.

Back in probably February, waltervn and myself tackled the resource compression of the non-King's Quest VI SCI1.1+ Mac games. King's Quest VI wasn't good enough to receive the compression of the other games. Then we found out that they changed the sprite compression routine again (runs now a word instead of a byte) for QFG1 VGA Mac. The Mac versions of Hoyle Classic Card Games and Freddy Pharkas became playable too, especially after waltervn put in a bunch of work on the hardcoded menu bar of KQ6 and Freddy Mac (though, still not complete).

One of the problems we found with these Mac games is that they have their black and white palette indexes reversed from normal SCI (black = 0x00, white = 0xff). Why? Because on classic Mac OS, white is always at 0x00 and black is always at 0xff. Our solution was to swap black and white pixels so that our palette code from the DOS versions would still work and would keep the complexity down.

Then, I took a look at the SCI2.1 Mac situation (GK1 Mac is SCI2.1 instead of SCI2 like the DOS version). The four SCI1.1 Mac games began to switch various resources to store multi-byte values in big endian order instead of the little endian order of their DOS counterparts. Starting with GK1, Sierra began to, as I like to put it, "big-endian-ify" the remaining resources. I also added support for the high-res GK1 Mac fonts that the DOS version doesn't have. It currently is probably on the same page of support as the DOS version (minus the sound driver and one skippable timing bug in the Day 1 intro). Gabriel Knight 2 Mac also has some small amount of support, but with some more weird transparency issues. The later SCI2.1 Mac games have some Sound class changes (the SCI class, that is) that causes games like Phantasmagoria to not start without a couple hacks.

Going back even further, there's three SCI0 Mac games that we don't support yet either: Space Quest III, Hoyle's Book of Games I and Hoyle's Book of Games II. These three are special in that they run in a higher resolution than the usual 320x200 and have high-res views.

And now for some screenshots:

Clicking on the KQ6 menu

Looked at that awesome greyed out effect!

GK1 high-res fonts = awesome

Yeah, it's Mostly working (I am the king of lame puns)

Monday, February 21, 2011

Just Some Code Lying Around...

Well, as promised by yesterday's post, I would come back with some more code. Oh look! There's two new branches on my fork of ScummVM.

First off, is jmp, which was supposed to be an engine for the Windows versions of The Journeyman Project (Turbo!) and its sequel, Buried in Time. However, other than an AVI player (KQ6 put this code to good use), not much was of use until recently when I added support for loading resources from the EXE/DLL. Both games are entirely hardcoded. Still not much is done, but it's got some good code in there for the Cinepak-based bitmaps I mentioned on my blog before. The codebase here dates back to 2006, so be gentle with it.

Probably the more important of the branches, at least to me, is pegasus. Unlike their predecessors, The Journeyman Project: Pegasus Prime (Mac only) is not hardcoded (minus some 'minigames'). It seemed like a better candidate to me. Well, it's a bit more functional than the others but still not much is done. You can traverse the menus a bit and the intro plays (with that recently-added QuickTime seeking), but not much else can be done yet. And thanks to a fellow fan's research, some of the resource types are also loaded in (but not all). I intend to continue on this when I'm done with Mohawk (at least the "core" Mohawk games :P).

It feels good to get this all off my chest. Have I mentioned how much I love git?

Sunday, February 20, 2011

Git 'er done

Now that ScummVM has moved to git, I figured I would do a couple things with a fork of the project. I love git so far!

First off, I brought my Rebel Assault changes mentioned recently to a fork called ra-smush. I also got audio (mostly) working in it (there's a slightly different SAUD frame header). No, don't even think about asking support for it in ScummVM!

Secondly, my old Star Trek engine (for 25th Anniversary and Judgment Rites) has found its way into another fork.

And maybe there will be more forks soon.......

Tuesday, February 15, 2011

Monkey Island FM-Towns for Sale

...at the low low price of $1200! Even Zak isn't going for that much. You know a game is expensive when it's for sale at double the price of Zak McKracken FM-Towns.

But, hey, look on the bright side: there's free shipping.

And now back to our irregularly scheduled program.

Saturday, January 29, 2011

Riven iOS

My father wanted to buy Riven iOS for his iPod Touch, so I figured I'd take a quick look at it. The game itself seems to work well, but the videos are a bit jittery. Now onto the more important part: A look at the data files.

No, I'm not going to reimplement this engine. But at least this would be a good starting point for anyone who wants to.

It was pretty easy to figure out everything that was going on immediately. Ron Hayter already updated his Riveal tool to extract the images from the game. So, here's pretty much what's going on with those formats:

Images
PNG in the main directory and in zip files with the stack name in it, for example: "aspitimages" is the zip file holding images for aspit, also known as the main menu.

Sounds
CoreAudio Format in the main directory.

Movies
MPEG-4 with h.264 video and AAC audio.

Scripts
Now, here's the interesting part. The scripts are all in a SQlite database (version 3). They're also named by the stack, such as "aspitdb" for the scripts for the main menu. The actual scripts seem to be all in strings, probably based on the original HyperCard source (which was never released). I matched up some script segments for a comparison:

Riven iOS Script
Riven Win/Mac Script (dumped using ScummVM)

The card scripts start with the script type. The hotspots have the name followed by the rect followed by their scripts. It's pretty much the same setup as CARD/HSPT in the Win/Mac version.

Miscellaneous Observations
The entire main menu seems to have been converted, but is unused. Anyone who finds a debug mode in the app and goes to the original setup page gets a cookie from me.

Sunday, January 23, 2011

The Riven Easter Egg Shortcut

Hopefully the couple readers I have remember a post I did back in August entitled Riven Easter Egg Plus. For those who don't, it was about there being some script fragments on how to shortcut the full Riven easter egg.

Tonight, I present to you the full version of that shortcut. There is a trick to doing it and the game itself will try to block you at various occasions (disabling the shortcut just because you turned one way by accident). Oh yes, with the original interpreter as well. So, here's my best attempt at explaining this. You should *not* click on any red-shaded areas.

1) After the intro videos, walk over to the handle and click it *one* time.







2) Turn around to the cage (avoiding red spots) and look up. Then click the star on top of the helmet *one* time.





3) Turn right from the helmet and avoid red hotspots to walk over to Cho.







4) Click the hotspots on Cho in this order:



At this point, you have just taken a shortcut through the first four parts of the Riven easter egg. The last part is to go press the RAWA hotspot over by the maglev.

Yes, that's right. You can get the entire easter egg setup from the beginning without ever leaving Temple Island. So what are you waiting for? Go try it out! :)

Tuesday, January 11, 2011

Riven Update

Been a while, but here's a Riven update! Today, I finally finished QuickTime seeking support, so I quickly jumped at the opportunity to implement another puzzle, and here are the results:

This is how I envision my death

Need some aspirin?

Also, the telescope actually moves now instead of just jumping from place to place. Stay tuned for more updates soon, hopefully, maybe!

Feeling Rebellious

Out of boredom the other day, I decided to play around with ScummVM's SMUSH player and see if it could be "convinced" into playing some Rebel Assault videos (not Rebel Assault II, that's basically already there).

These version 1 videos are very similar to their version 2 brethren (Rebel Assault II, The Dig, Full Throttle, etc.), but have some differences. The delta palette code is different, providing fewer entries (smaller color sizes?). Audio and text seem to be handled differently as well. At least the audio flags are different. There's also a 'PVOC' chunk that probably deals with audio and a 'GAME' chunk that I can only speculate what it's for. Of course, I completely ignored the 'IACT' (interactive, for the INSANE code).

So, minus audio, text, and palette changes, I was able to render a couple frames. A couple at any rate. Without further ado:

The cutscene after the hardest level in the game. Seriously, who makes a level that hard and difficult to navigate? Damn Kolaador...


Now someone should go implement the game (not in ScummVM)!

Wednesday, December 15, 2010

Some Carmen Images

Well, we don't support Where in the World is Carmen Sandiego? yet beyond showing images. But we added support for the DOS images of Where in the World is Carmen Sandiego? Deluxe Edition yesterday, so I figured I'd show it off. Also, I don't update my blog enough, so here's a post.

Where Wile E. Coyote Shops

Police Squad! ...In 256 Colors


These are the same (well, similar) images from the intro of the two games. The former is in EGA from Deluxe and the latter in VGA from v2. They went full screen for Deluxe game and decided to size it down for Windows (The first image is actually three 640x160 images put together).

Surprisingly (or I guess I shouldn't be surprised considering how much Brøderbund likes to reuse things), the CSWorld Deluxe archive format is the same one used in Prince of Persia 2!

I cracked the archive format before I realized PoP2 used it, so I only found this info out afterward. Same with the simple SND resource format. I checked out the specs for the bitmap decompressor and applied a modified version to the ScummVM source (thanks to fuzzie for helping figure out the data was EGA planar). And lo and behold, it uses the exact same modified LZ decompression that was used in all other Mohawk games (minus Riven). It looks like the planar part isn't in PoP, but I'm not sure.

One last note: We will not support Prince of Persia 1/2 in ScummVM no matter how much you ask. ;)

Monday, November 29, 2010

Surprise Update #2

Poof again!

bgK has finished coding the Selenitic age for Myst! Feast upon the glory that is the best looking (IMO) and also the hardest (by far). I cannot be paid to solve the maze runner puzzle with all the bleeps, sweeps, and creeps (Yes, I just went there) so I don't blame you if you cheat on the maze runner. If anyone wants to try, they'll need to use the debug console and run "changeStack Selenitic 1282".

Screenshot time!

Does the door really need to close behind you?

Actually, this has always worked. I just like fire.

BRING ME THE PAGES

In Your Tunnel

Does anyone actually do this puzzle?


What hell truly looks like

Sunday, November 28, 2010

Surprise Update #1

Poof!

fuzzie has done some great work on Living Books code for Mohawk in ScummVM and the games are very very very playable. Go try them out (along with our collection of near-infinite demos)! v1 games (the older, 512x384 ones) work near perfectly while the v3 games (640x480) have some new features that aren't fully supported yet. And now time for obligatory screenshots along with random semi-humorous subtitles provided by me.

A Way-Too-Happy Book

Fast Decaying Ham

Riding a Dog

Creeping Logo

Arturo, por favor

Eternal Third-Grade Punishment