Sunday, January 4, 2009

The Ultimate AGI Specification

As you perhaps know, for last 1.5 years ScummVM serves as an Ultimate AGI engine, especially since Kari Salminen aka Buddha^ joined us first as a GSoC member and then as a full-blown developer.

To the date ScummVM covered more AGI games than any other open AGI interpreter. The missings are AGI0, AGI1, AGI2.01 games as well as Tandy CoCo3 conversions.

Though there was a thing which bothered me for quite time, that is the fact that famous AGI Specifications is not fully converted on our Wiki. Important sections were missing, and not all existing text was in a good shape. So, finally I got some time and completed the project.

Now you may go and explore it on our Wiki. The big help for me was a wonderful online HTML to Wiki Converter - tables tool written by Borislav Manolov. I highly recommend it. Read More...

Wednesday, December 24, 2008

A saga about SAGA

I wanted to tell this story for a quite long time. A draft of it was sitting on my HD for couple of years. And now, there finally it is. A piece of ScummVM story, a saga.

All of this started back in May 2000. Daniel Balsom was so delighted in furry Inherit the Earth game, so he began to peek into its executables in order to make it run on his Windows XP. YARN (Yet Another Remake? Nifty!) was born. The aim of this project was to run both Inherit the Earth and I Have no Mouth and I Must Scream, though practically straight away he switched to The ReInherit Engine, supporting just the first game.

I may say that it was a horrible time. Daniel ran original game with DOS Debugger and tried to figure out what is going on there, staring into a hex editor and documenting it on sheets of paper of different sizes and then attempting to curl his head in order to write C code. He told me that there was a big pile of those papers and he even offered to scan them. Ugh!

In some time the game intro was showing with handful of bugs, but next real world event killed the work. Original Inherit the Earth director, Joe Pearce, announced that he acquired full rights on the game and that there is a re-release in the works, compatible with Windows XP. Thus, whole purpose of the ReInherit project was voided, and Daniel was discouraged to continue any work on it. It was around December of 2003 when last commit to the engine was performed.

As soon as in March 2004 I found this abandoned project and offered Daniel Balsom to join our team. He was pretty busy at that time (and still is), but offered his help as a consultant. We got his sources, ported it over to OSystem (core of ScummVM hardware abstraction layer), then started to map out functions in Interactive Disassember.

In parallel I tried to contact Joe Pearce of Wyrmkeep and inquiry about the game engine soruces. Daniel told me that he already tried to contact Joe about a year earleir, but that was exactly the time when Joe was in process of the game rights clearance, so obviously, he was not able to pass any game materials. We thought it was a fat chance. Mr.Pearce was not fast with replying my mails, but suddenly, at end July 2004 a miracle has happened. We were given complete sources for ITE!

Thus, we closed our IDAs and started to look straight into C/Asm code of the original. According to the accompanying license we could not use more than 5% of original code verbatim, that's why instead of porting original code we continued to work with ReInerit codebase and fix it along the way.

I found a guy from Russia, Andrew Kurushin who joined our team in December, 2005 just for helping us with the engine. After a year of work, in August of 2005 we finally announced support for Inherit the Earth game.

After completing support for ITE we decided to pursue the ultimate goal of YARN, that is to support both games of the engine. Thus, work on I Have no Mouth and I Must Scream started. This time we did not have any source code. The engine developed quite a lot, but still it was the same. I started very slow and time consuming work of mapping it out. Pretty quickly we stuck, as there were subtle changes in actor handling which prevented game from playing, and actor code is one of the most complex in the engine.

The work was practically on hold for 2.5 years until June 2007 when Filippos Karapetis joined us to resume development. During that period I tried to encourage developers to help me with the engine, but due to complexity of the task, I did not succeed. Andrew became superbusy with his real life, and I had much of other work to do with ScummVM.

Filippos lead the development by a huge leaps. No longer that just in 3 months I Have No Mouth was announced as supported and that is without source code (!).

This was story about SAGA (Scripts for Animated Graphic Advenures) engine. But it continues even today. There exists SAGA2 engine, on which games Dinotopia and Faery Tale Adventure 2 are based, and Filippos recently started to0 work on them. We also got source code for FTA2 on a similar license as ITE, and I hope that pretty soon yet another couple of games will be added to ScummVM collection of fine games.
Read More...

Tuesday, July 22, 2008

0.12.0 has been branched

Basically that means that there are just a few days that Tinsel engine will be in SVN. No, 0.12.0 will not contain it, as the engine is too raw, and there are still some legal questions to resolve.

I really hope that this will not interfere much with the testing season, as it will still not appear in the daily builds. But for our porters it will mean that we the compile-testing ;) will start on it for all supported platforms which will let us work on the portability issues. Read More...

Thursday, July 10, 2008

Discworld: A Smooth Tale

Here is a short note from one of the playtesters:

"I have played Discworld on an 80486 originally and then a Pentium and many years later on DOS Box and I can say without any doubt that the ScummVM version is the smoothest and most pleasurable Discworld experience ever!

Congratulations to the ScummVM team for such a wonderous achievement in such an early private build of the engine." Read More...

Wednesday, July 9, 2008

Discworld: End of game

Here it is. It was made just yesterday with current code base. Libcoro was so non-portable, that it did not work well even under Windows. Now when it's gone, we're portable enough, so we expect it to work across all ports. Read More...

Tuesday, July 8, 2008

Goodbye, libcoro, goodbye

Our Tinsel team finally got rid of unportable libcoro in the favor or method described by Simon Tatham here. This means that soon, very soon Tinsel engine may appear in the SVN trunk.

I do not have an end game screenshot handy, but I suppose that you will be able to produce it by yourself pretty soon.

So, yet another important part of adventure gaming history will get a second life soon. Read More...

Saturday, June 21, 2008

Discworld1 is completable

Yes, it has been less than a month, and Discworld 1 is completable. Actually it is completable since last Sunday, just afer 215 commits. Now the commit count is 320, as the Tinsel engine team works pretty fast. It has been mentioned on the forums that there are few glitches and some portability issues (mainly endianness, 64-bitness and alignment), but the engine itself is in a very good shape.

Though don't ask when the engine will land to trunk. There is a major task ahead, that is engine rewriting. Yes, that's right. We chose a most efficient path of adopting, that is take original sources and port them quickly to ScummVM OSystem. But the code now reselmbles original a lot, and this is a big no-no according to our license agreement with the rights holders. So we have to refactor it, rewrite, and get rid of those co-routines, which will make the engine wastly different from what we have now. And only then we will go public.

Next target is DW2, and perhaps we will integrate it before the refactoring will finish, granted that we will get hold of it soon.

Anyway, this is already a really exciting news. Read More...