Happy birthday

I was shocked to notice that, as of yesterday, it has been a year since I posted anything on here. That’s not really that surprising, given that I’ve been well and truly absent from the ScummVM community, but I plan for that to change. I’ve set aside some time each week for personal programming, either ScummVM or Android (for which I’ve set up a separate blog) (or possibly a combination of the two, now ScummVM has an Android port).

I also suddenly realized how out of date the title and description of this blog was (referring to “motions towards”, etc), so I’ve made it a little more relevant. I didn’t want to put a pun in, but when the engine name is Groovie it’s hard not to. Forgive me?

Call for playtesters…

We need more people to play The 7th Guest! ScummVM is aiming for it’s 1.0.0 release, so we need everyone to test all games, to check that no bugs have recently been added. In particular to this blog, we (well, ST) just fixed a big bug in the music (that was present in the Win95 beta player too, but not in the DOS exe), and no-one has played through the whole game since, to make sure it didn’t break anything.
So if you have a bit of time, download a daily build of ScummVM, and play through the game, looking out for bugs. If you complete it, post a comment here saying which operating system you played it on and whether you found any bugs.

The game just got longer

Just a quick note, as I’m at work. The 7th Guest just got much harder to complete in ScummVM:

http://scummvm.svn.sourceforge.net/viewvc/scummvm?view=rev&revision=42634

Please give it a test if you can and report back!

ION, I’m in the midst of a house move, so won’t be doing anything ScummVM-related for some time.

I’m not saying Apple are evil, but…

I don’t use the word “hate”. It is too strong for most of my emotions. If I did, however, I would most likely be using it right about now, with regard to HFS.
When copying the files for the disc (with hfsutils, see previous post), there are several modes that can be used to copy the files: raw, binhex, macbinaryii, text. There is also an auto mode, which tries to make an intelligent guess as to which mode should be used. Unfortunately, it doesn’t get it right for the T7G data files: it tries to copy them as text. They need to be copied with the raw mode, but the binary (which also, helpfully, contains another selection of required files) cannot be copied in raw mode. That can be copied with auto (which guesses correctly that it should be copied with the macbinaryii mode).
I think before I dig too deeply into support for the Mac version I’m going to have to learn a little more about how HFS works, and why this confusion arises. I remember a Mac-based friend trying to explain to me (about 15 years ago) all about resource forks, data forks, etc. I just sat there thinking “surely a file is a file? it start, has binary data in, then ends, and different files are interpreted in different ways”. I wish I was still in contact with that friend so I could phone him and get him to repeat the conversation…

Edit: It seems I’m not alone in my view of HFS: http://www.engadget.com/2008/02/05/linus-torvalds-calls-apples-file-system-utter-crap/

HFS 2: The Revenge

When I originally got my copy of T7G for Mac, I diligently copied all the files off it (twice, in fact). However, I now need to do it again (for reasons that I won’t go in to), but this time I have an ISO image file (I ripped it when I was faffing with the disc last time). I have since completely reinstalled my OS and I couldn’t for the life of me remember how I did it the first time round.
The ScummVM HFS wiki page is rather Windows-centric, so I had to figure out (again) how to do it on Linux (specifically Kubuntu Jaunty). I was surprised at how easy it was, but as it might be useful for others (that might be willing to play test in future ;-), I figured I’d post it here.
Once I’d installed hfsutils (e.g. sudo aptitude install hfsutils), a simple call to “hmount hfsimage.iso” does a virtual mount of the image, so any future calls to the hfsutils commands (hls, hcd, hcopy) will be referring to that disc / image.
Now, which file was it that I wanted… I knew I should have written it down…

Mac attack!

Well, free time has been sparse for all of us. My work has gotten much more hectic (partly thanks to a promotion a couple of months back, so I can’t really complain), but I’m trying to make more time over the next few weeks for some ScummVMing. Though I will also be moving house, so we’ll see how it goes.

Anyway, my plan is to get back into it by working on T7G Mac to begin with (sighs all round, I’m sure, but 11H will come at some stage no doubt). It’s filled with little tricksy problems, not even including getting the files off the disc in the first place. In approximate order of difficulty:

  • Some files need to be renamed to work
  • Files are squashed into a single data archive (jvprat has written an extractor)
  • Fonts are not included, as in the DOS version: native Mac system fonts were used
  • Music was not MIDI, but Special Mac Fancy Format™

This last one is the real biggie, so don’t expect lovely Mac music anytime soon. I’ll probably have got distracted into 11H before I manage to get Mac music sorted.

PS Btw, if anyone wants to follow me on Twitter, you can find me here: http://www.twitter.com/hjsb. Though it’s mostly just bitching about how the artists at work don’t do what the pipeline guys tell them to.

The future is bright

Well, for those that haven’t read jvprat’s comment on my previous note, the list of major problems looks a little different now:

  1. The engine is currently designed to play just one game – jvprat has committed changes that let us use two separate opcode lists. May need changes in future (apparently), but not holding us back anymore.
  2. 11H uses > 8 bit graphics (i.e. more than 256 colour images) – Well, technically this is still an issue, but we can view everything in greyscale / dithered for the time being
  3. 11H uses a completely different video format – Might need some changes later, but basically working
  4. The script opcodes have changed – The only one left, and Scott is having fun working on it. I only wish I had a bit of time to join in!

Past, present and future

Well it finally happened. The new version of ScummVM contains the Groovie engine, capable of playing The 7th Guest. It’s quite exciting really. But now I’m just thinking about where to go from here.
It’s not like T7G is completely finished: see the ScummVM wiki for more info on known issues. But it’s close enough for now: I’ll come back and look into them at some point in the future, as for now I have bigger fish to fry.
I’m sure there are a lot of people out there who are thinking that adding support for The 11th Hour will be easy, as it uses the same engine. However, let me explain to you why that’s not the case:

  1. The engine is currently designed to play just one game.
  2. 11H uses > 8 bit graphics (i.e. more than 256 colour images).
  3. 11H uses a completely different video format.
  4. The script opcodes have changed.
    Those are just the big things that are obvious from the outset: I’m sure there are other smaller things (have you noticed the animated cursors blend together?).

Number 1 will involve refactoring the entire engine: no real changes, but involves difficult design decisions.
Number 2 is the real biggie. It’s going to involve even bigger design decisions that will affect the whole of ScummVM, not just the Groovie engine. If ScummVM is accepted into the 2009 summer of code, it’s one of the possible tasks, so we’re going to wait and see if it gets taken up before even thinking of undertaking it.
Number 3 isn’t as big as you might think: jvprat has already implemented a basic player from format descriptions on tinternet.
Number 4 will involve lots of fun reversing. We know a bit better what we’re looking for this time tho!

Lots to do then, and very little free time to do it in. But there’s no hurry 🙂

Supported

This post is probably pointless, as probably the ones of you that follow this, also follow ScummVM‘s news page. But as of yesterday, The 7th Guest is officially supported by ScummVM. This means that it will be included in the next ScummVM release (0.13.0, whenever that may be), and that we’re accepting bug reports to the ScummVM bug tracker. And if anyone submits “the microscope puzzle doesn’t work like the original” then I won’t be impressed 😛 (see previous post if you don’t know why).

It’s not quite what I intended…

The microscope puzzle. As many of you might have predicted, even the non-programmers, it’s one of the more difficult bits of the project. In fact, just as it was one of the more difficult bits of the game.
I’m going about it in a way that feels like cheating. Basically, I’m completely ignoring the disassembly for now, and implementing my own algorithm (with inspiration from this tool) play the game (hopefully well). The ideal thing being that once I’ve done this, and have a really good idea of how the game works, I then look at the disassembly and figure out more easily (though certainly not easily) how it works. But it is possible that this latter step may get… postponed. Depends how well my algorithm works (and how different its playing style is from the original’s).