RSS

Filfre version 1.00

(For the impatient: A new version — version 1.00 at last, in fact — of Filfre, an interpreter for IF games running under the Z-Machine or Glulx, is now available. You can get it from this very site.)

Seven years ago, I decided to write my own Z-Machine interpreter for Windows for two main reasons: 1) I wanted an interpreter with an integrated scroll-back buffer, and no one seemed inclined to provide one; and 2) I thought it would be a crazy fun project. Nerd that I am, the latter expectation proved to be correct. The first game I got working, opcode by opcode, was Infocom’s Infidel. I’ll never forget the feeling of satisfaction I had when that first paragraph of text finally appeared on my screen. There’s nothing quite like creating something for yourself, then stepping back and watching it work.

Still, that first version was very much a learning experience. I had only dabbled in Windows development before I started on it, and had no idea how to put together a modern object-oriented C++ application. When I decided to add Glulx support along with all the multimedia goodies that entails, I quickly realized that the only viable approach was to rip it all up and start again. I now understand that I still didn’t really know how to build a modern etc., etc., application, but I was at least a little better at it than I’d been the first time around. Since the burst of activity that resulted in Filfre 0.97, the first to support Glulx, in July of 2007, I’ve only come back to it in fits and starts, generally to fix bugs when my list of them got sufficiently long and to implement additions to the Glulx and GLK standards as Andrew Plotkin has made them.

I’ve been working with the specifications on Andrew’s site quite a lot recently for another project, one about which I’m quite excited and hopefully can tell you more very soon. A couple of weeks ago I downloaded the exhaustive suite of Glulx unit tests Andrew has recently uploaded there, one of the first fruits perhaps of his new status as a full-time IF “professional.” I decided, just for grins, to try them out quickly on Filfre. Lo and behold, what I found was pretty disheartening, in the form of great swathes of Glulx opcodes (dealing mostly with floating-point support) and GLK functions (dealing mostly with Unicode support) not yet implemented at all, and, even more embarrassingly, quite a few old opcodes that didn’t always work quite right under my implementation. So, the exciting project went on hold for a while, and two weeks later I finally have a Filfre that passes every one of the unit tests, and thus should fully conform with every aspect of the latest Glulx standard. And so I’ve decided to call it version 1.00 at last.

Mind you, I still die a little bit inside when I look at the code for Filfre. When I developed it I was still essentially treating C++ like C with a few useful new conveniences; all of the GLK I/O layer, for instance, is essentially implemented in a single class. And I have another burgeoning problem: the whole thing was developed with Borland C++ Builder 6, and relies on Borland’s VCL libraries from 2002. Builder 6 in fact has a number of compatibility issues with Windows 7, which made the last two weeks less fun than they otherwise would have been. My instinct is to rip it all up yet again, start over, and see if the third time really is the charm. But not right now. I still have the more exciting project, after all. And, while the old girl is a bit ugly on the inside, she works quite well from the user’s perspective. (The compatibility problems I spoke of affect only the Builder IDE, not applications created with it.)

Filfre hasn’t exactly taken the IF world by storm, but there has been one particularly gratifying thing about the experience: it turns out that Filfre works very well with screen readers, and thus it’s allowed quite a few blind people who had problems with other interpreters to play and enjoy IF. I wish I could say I anticipated and designed Filfre for this, but I can’t. It’s simply a happy accident, a result of my choosing to use the RichEdit libraries to implement I/O rather than drawing directly onto a canvas. But it still makes me pretty happy, and the emails I’ve received from the blind over the years have been some of the most gratifying of my life.

So, if you know and use Filfre, the latest and greatest is waiting for you. (And yes, the bugs that caused problems with The Blind House and Aotearea from last year’s Comp are both fixed.) And if you don’t, and you use Windows, and you’d like an interpreter with a somewhat more full-featured interface than the norm, an integrated scrollback, and a few useful convenience features, maybe you’ll want to check it out.

 
1 Comment

Posted by on March 7, 2011 in Interactive Fiction

 

Introducing a new blog…

While surveying the state of the Internet today, I decided that what the online world really needed was another blog. Luckily I have never been short of opinions to share. And so I proceeded to do some research into the best approach to my new endeavor. Several sites told me that if I hoped to acquire actual readers I should choose a narrow niche and hew to it rigidly. Others told me that with a bit of planning I could actually make a living off this blogging thing. One helpful fellow said I should review as much music as possible as quickly as possible, linking in each review to the Amazon.com product listing to make some money off every happy consumer I sent Amazon’s way. I needn´t waste a lot of time actually listening to the music I reviewed, he informed me; I need only use the snippets of songs on the Amazon site to get a “good impression” of an album, and so could I be on my way to riches with a minimum of critical effort. I thought about combining these two pieces of seemingly excellent advice, but quickly realized I would have a problem almost immediately: if I built a blog about, say, flugelhorn players who recorded during the 1970s, and reviewed as many flugelhorn albums from the era as possible as quickly as possible, I would soon be out of material. So I decided to throw out all this advice.

Instead, I’m going to use this blog to write about an eclectic mix of things that actually interest me. I may be commiting a sort of Internet-traffic suicide, but maybe one or two of us can have some fun while it lasts. So, you can expect updates on my various projects here along with lots of opinions on music, books, games, and who knows what else. And you can expect a bit of theory, and perhaps some cultural observations, and perhaps even a personal anecdote or two. Or maybe I won’t get to all of that. Who knows?

Defensive self-effacement aside, I have no idea where this blog will go. I tell myself that, as a writer by at least one of my trades, it’s good practice for me to write someplace like this frequently, to keep the old chops sharp, as it were. That’s true enough, and it’s also true that plenty of people before me have kept diaries and journals just for their own satisfaction. But I won’t lie; I’d like it if a few people actually started to read and comment as well. So, whether this is the start of a big thing or a failed experiment or a literary masterpiece whose important will be understood (a la Samuel Pepys) only a century from now, it’s definitely the start of something. Wish me luck, and thanks for reading!