Friday, May 22, 2015

Happy Birthday, Sir Arthur Conan Doyle

Hey everyone.

Looking back it seems, to my chagrin, that it's now been over a year since my last news posting was over a year ago. Whoops :P. Not that I haven't been keeping busy over the last year or so, with the release of Voyeur, Amazon - Guardians of Eden, Rex Nebular (finally), and of course, the newest game.. The Lost Files of Sherlock Holmes: Case of the Serrated Scalpel.

Many thanks go to EA for providing us access to the original source for this game. Also to forum user sirlemonhead, and to James Ferguson, who patiently over the last few years tried to make this happen. I've always been a big Sherlock Holmes fan, so it was fun to work on this project.  It feels fitting to merge the game into master on the 22nd May, which is the birthday of the character's creator, Sir Arthur Conan Doyle. The engine isn't quite ready for serious testing yet.. it's still missing music playback, and there's also a starting logo animation that's not present. It should be finished soon, though, so expect to see an official testing announcement in the near future.

So.. as things stand, what I am up to right now?

The Logo
Apart from the game proper, one of the more interesting things about the game is at the very beginning, where the publisher EA logo is shown. This logo display was actually implemented in a separate executable using the TsAGE engine, of all things. Original source for this couldn't be located, so it means that I'm having to reverse engineer it. Luckily, since we've already had experience with several other TsAGE titles, I've been able to make excellent progress in figuring out all the various TsAGE classes and their methods within the executable.

At the current point in time, I've identified the bulk of the core TsAGE classes, and the custom logic for the "game", which is contained a single scene class. This scene class consists of several scene objects, a few palette containers, and an "Action" class for coordinating what happens in the logo display. There's only a minor variation in how object sprites are loaded compared to the games that I still need to figure out.

I've already started implementing a new sub-module within TsAGE for the game logo. Once I finish that, it will be easier to analyse all the movement and frame changes of the images with the scene.  Hopefully, based on that, I'll be able to simulate a similar sequence in our new Sherlock engine using the bare necessities from TsAGE - likely just the RLB archive manager and sprite loader. Particularly given the thoughtfulness of EA in providing us access to the original source, it would be nice to give them (the company) proper attribution by showing their logo just like the original game does.

The Sequel
Apart from that, we have also been given access to source for the sequel, The Case of the Rose Tattoo. Implementing this is likely to be much more challenging, as the sequel changed over to a 640x480 display, and significantly altered the user interface. As such, it's likely it will need a lot of re-factoring of the code base to add support for it to the existing engine. If you thought a lot of re-factoring was done during the pull request, you 'aint seen nothing yet. :)

I'm also somewhat constrained by the fact that the original uses DOS4GW and a 32-bit code segment. Whilst we do have the original source, I need to be able to run the game in DosBox so I can actually see the code running, and check registers and memory contents at given points in the program. I've had some significant trouble with the DosBox debugger, trying to set breakpoints in the code so I can inspect the game's state.  Doing so crashes either crashes DosBox, or the game executable, or the breakpoints simply aren't hit.

So far, I've only done some preliminary loading of scene resources in the second game, and the lack of a way to display the program state meant that I had to take a more laborious route of poring over the various resource structures and scene loading code in both games, to try and figure out what the differences were between the two, so my code can support it. Likely, as I proceed with implementing more of the game, this will cause real issues that will make finding bugs a lot harder.

World of Xeen
It's been somewhat on a back-burner since I started work on the Sherlock Holmes games, but I had previously made real progress on re-implementing World of Xeen using the ScummVM framework. See below:

As you can see, I have much of the game interface implemented. You can move around, fight monsters (with a few minor glitches), and even leave the town. There are really only a few main areas left to implement, which includes sound support, logic for all the various spells, savegames, and the intro/ending cut-scenes. I probably won't return to working on it until after Rose Tattoo is finished, though. But when I do, I don't anticipate it will take long to finish the remaining areas, and then it would simply be a matter of playing the game through in earnest, identifying and fixing minor bugs as they're identified.

Of course, as an RPG, World of Xeen is a bit outside the scope of ScummVM proper. At that point, it may be time to finally launch the RPG sister project Strangerke and I have been wanting to do. :)


Robert Megone said...

Nice work Paul, I find it very interesting that the game logo was displayed using a different engine. Does the code give you an indication of why?

Were other EA games shipped using the TsAGE engine? I'd imagine there was a reason for them doing this but I can only think that maybe they re-purposed something pre-existing..

Bizarre :) Either way, thanks for your valiant efforts and thanks to EA for their generosity!

Victor said...

I really liked the Serrated Scalpel years ago. Nice work.

My jaw drop when I see World of Xeen. I would love a ScummVM for RPGs! Please, don't let this idea die. This way, maybe some companies offer his old sources just like they do with adventures for ScummVM.

sirlemonhead said...

Great work Paul, and thanks for mentioning myself and James, It's really appreciated! :)


Dreammaster said...

Regarding the use of TsaGE, not really. My own theory is that because the game is already split up across two executables for the title/intro and the game they, as the publishers, found it easier to create the logo using a separate executable. They must have just had the TsAGE engine handy with someone who knew how to use it, and they whipped up a quick and dirty logo sequence. It makes some sense, since creating a video file with all the animation may have been even more complicated.

Good news is that the logo is now fully implemented as well. So the next official release will properly support the entire game, logo included. :)

Dreammaster said...

Don't worry, I definitely have plans for finishing Xeen, and beyond. Even for Xeen, not only could it be further extended to support Swords of Xeen, and likely even Isles of Terra without too much trouble.. who knows, I muse whether it might be possible to even support either of the first two games using the same core engine, and graphics from the later game. Even if the scene display remained the same, it would be a lot nicer to be able to show the later game's UI.

We've also got Lands of Lore and Eye of the Beholder supported in the main ScummVM tree. Maybe even we could work on bringing AESOP32 (Eye of the Beholder III) to proper life as a supported game as well. :)

Michael D said...

AESOP32 source code has been released by its original authors. It's somewhere on VOGONS

I'm very looking forward to a ScummVM for 1st person RPGs :) There are a few other types of games that could use a unified frontend like ScummVM, but RPGs are pretty much the most interesting ones ;-)

Dreammaster said...

It would definitely be a nice addition, particularly since the earlier games are already supported already. It would certainly help raise it's visibility, since RPG reimplementations are somewhat scattered at the moment, and it would be nice to have them altogether.