I6: older Inform6 and color flag

I just noticed something weird when examining some of my old code. The release of Shadowgate in the IF Archive was compiled without color support. Looking at the makefile for that release, I see nothing to suggest I intentionally did that. It seems that Inform 6.31 automatically turns on colour support whereas Inform 6.21 Library 6/10 didn’t.
I seem to have forgotten how to explicitly set or clear the color flag. Would someone here please re-enlighten me and point to the section of the manual where it talks about this?

The compiler sets the color flag (“Flags 2” header field, bit 6) if the @set_colour opcode appears in the game. There’s no way to explicitly clear it.

One of the changes to library 6/11 means that @set_color occurs in the library, which in turn means that Inform turns on the color flag in the header. This was almost certainly a mistake, but the only practical way round it is to find the @set_color calls in the library and comment them out.

Why was that code put in the library in the first place?

I’ve no idea, to be honest - I’ve never worked on the library.

It seems to me that there really should have been some sort of ifdefs around those calls of @set_colour. Here’s a patch that’ll do it. With this patch, a program that needs to use color should include “Constant COLOR” or “Constant COLOUR” at the top to let the compiler know it’s okay to set that color flag.
color-disable.diff.txt (1.36 KB)

Since this has been in the library for years, I think it’s a lost cause. Effectively, all recent Inform game files have the bit set, and so the bit is not useful for interpreters to look at.

Do you think you could get that patch added to the library for correctness sake?

I’m not sure it is a good change. The effect is to make the SetColour() routine silently not work unless the user sets a constant, which is a substantial increase in confusion for no obvious benefit.

In any case, I don’t think there’s anybody running an I6 library release process. Although maybe DavidK knows something about it that I don’t. The 6/11 library is unlikely to change.

(For a while, I think Graham was planning to release a core I6 library that would be included in both I6 and I7 games. You can see references to a planned 6/12 library in early I7 documentation. However, this never happened – I7 diverged too much and it stopped making sense to have any shared code.)

I think it would be a good change because it reverses the surprise of always setting the color flag.

What’s the state of Inform 6 anyhow? Will it continue to be developed? Does Inform 7 seek to replace Inform 6?

No, there’s no maintainer for the Inform 6 library. There’s no reason why someone couldn’t step up and take on maintaining it, but so far no-one has.

Inform 7 uses Inform 6 as its code generator, so the Inform 6 compiler is at least maintained to fix bugs and keep pace with Glulx: the git repository for it is at https://github.com/DavidKinder/Inform6. It’s highly unlikely that there’ll be anything other than the odd fix, though, unless someone else wants to take the code in new directions.

So I take it neither Graham Nelson nor Roger Firth are active in IF anymore? I’ll step up to keep the library going. It looks like there might be enough bugs reports accumulated to warrent working on 6/12.

Graham is still quietly beavering away on Inform 7, see http://inform7.com/. Roger isn’t active any more as far as I’m aware.

Okay, so I’ll start up a git repository of the library. Do you have any hints on getting metastore to do its magic automatically?


I’m afraid I haven’t used metastore, so I can’t help with that.

DavidK wrote:

I should note that we strongly want to keep the I6 compiler backwards-compatible from now on. We occasionally add features, but we want older I6 source code to stay valid.

That doesn’t apply to the I6 library, however. Traditionally, it hasn’t maintained perfect backwards compatibility, because games are too intertwined with library code (and most large I6 games hack parts of the library anyway). So feel free to wield an axe. :slight_smile:


  1. Inform 6 has a website that really should be redone (the navigation has always bugged me), and if Roger is no longer active in IF, then his name needs to be taken off several pages, as the person responsible. See this.

  2. There’s also the suggestions list. Do you have any desire/interest in pursuing these? Some of these are long outstanding and some of them are trivial fixes.

  3. As far as “new directions” go, there is some functionality I’d like to contribute that has been hanging around for quite some time (like disabling the inference messages), but didn’t have a way to actually get it heard. Can you make the suggestion process more transparent and/or allow people to join the project?

  1. I got a reply back from Roger and he gave me his blessing to take over things from him. Given this, I think I would require write access to those pages.

  2. Yes, I’m very interested in pursuing those. Roger said that Cedric Knight set up a CVS somewhere, but when Cedric left the scene, Roger lost access to it. I’ll have to ask Roger again if he has any code fragments lying around. He didn’t quite answer the question of what bits and pieces he has lying around.

  3. Perhaps the ideal way to increase transparency and encourage participation would be to put the Library on Sourceforge. I already run Frotz development there. I just now created the “Informlib” project which will house further development.

Please consider using Github instead. For one thing, the inform 6 compiler source is already managed there. For another, their “pull request” system is a fantastic way for users to submit patches, for the maintainers/community at large to perform code review, and then to merge the patches into the code base. And for still one more thing, Github offers free web page hosting, so you could get started on that while waiting for control of the old website. Or, because Github supports custom domains, you could keep the hosting at Github and just get Graham/whoever to change where the DNS points to.

Ok, sounds good. Thanks for actually responding to my inquiry and taking it seriously.

At least for now I’d like to stay with Sourceforge. Their new 2.0 interface has me a bit annoyed, but I’m not sure. I’ll poke around at Github some more before making a decision. I’ve had an account there for a while under the username “Frotz”. I wonder if I should keep that name or switch to my real name.