Fancy Status issue

I hope this hasn’t already been addressed; it’s not an easy thing to search for, unfortunately.

I’m experiencing an issue in the Inform 7 IDE and Zoom that I think is specific to the Basic Screen Effects extension and, I believe, to Mac OS X 10.8. Constructing a “fancy status line” with multiple rows (à la Bronze’s compass rose) causes the interpreter to stop responding (the blinking line disappears; typing, clicking, and muttering do nothing) after one or two turns.

[code]Include Basic Screen Effects by Emily Short.

Rule for constructing the status line:
fill status bar with Table of Fancy Status;
rule succeeds.

Table of Fancy Status
left central right

Smash Mouth is a room.[/code]

This only happens when compiling to Z8 or Z5. Compiling to Z6 instead causes some extremely weird text display problems; compiling to Glulx works just fine, although the status bar looks a little wonky (the blackspace isn’t completely even, at least in the IDE). I haven’t experienced these problems while using OS X version 10.6.8.

Is there anything to be done?

Zoom was doing the start-freeze and related bugs in 10.7, and since Zoom hasn’t been updated for a long time, I assume it’s still doing it in 10.8?

EDIT: There were fixes in version 1.1.5. If you’re not up to that version, try it first. If no love there, then bust out Gargoyle.

Don’t worry about the slightly uneven blackspace in the IDE, though. That’s just an IDE eccentricity, I’m pretty sure.

  • Wade

Updated Zoom; the status lines still make the game freeze in 1.1.5 (as well as the Inform IDE).

I’m not sure if you knew, but the Mac IDE sorta is Zoom. So you not only need fixed Zoom (which you now have), you’ll need fixed Inform.

Apparently if you re-download Inform for Mac OS X here: (top file)

that will include some fixes. The result was that it got Inform running in 10.7, but I haven’t heard anything about 10.8 (either pro or con) so I offer no guarantee, but I wish you luck.

Btw, I’m just reporting hearsay I’ve collated. The way I’ve been finding info on this topic from the boards is by doing a search for ‘zoom lion’

  • Wade

The uneven blackspace happens in all versions of the Zoom/IDE interpreter. Basically, the text-grid window proper consists of a given number of fixed-width characters, but the window as displayed can be an arbitrary width. Zoom uses white to fill out the difference. You can manually adjust your window to fix this (outside the IDE, “white” for Zoom is a pale goldenrod). Gargoyle has the same issue, though it tends not to be as noticeable unless you have added additional windows to your layout.

This isn’t necessarily something that interpreters should do differently. I believe that the “background color” of the status lines generated by Inform is technically white. The printed portions of the window are given a reversed style so that the background color is used for characters. Assuming that the white for the “leftover” portions is the pure, nonreversed background showing through, this could be fixed by building the library status lines differently–using colors rather than reverse stylehints. At least, that should work for Glulx, not sure about Z-code…


I am seeing the same problem using Mac OS 10.8.3 and the IDE Inform (1.2 6.31/6H98).

While running in the IDE, including Basic Screen Effects by Emily Short, and running a rule that fills the status line with a fancy compass, the game window locks up when trying to update the status.

The (almost) root problem seems to be:
fill status bar calls
deepen status line to __n rows; calls
(- AltDeepStatus({depth}); -); calls
VM_StatusLineHeight(depth); Blam!

If VM_StatusLineHeight is called with any number greater than 1, then the game window locks up. It is possible to rewrite this chain of calls so that the DeepStatus invocation does not include the offending operation. Unfortunately, that messes up the scrollable area and looks very untidy.

It has been a very, very long time since I wandered through the depths of Z-code; does anyone know how to go about addressing the problem with VM_StatusLineHeight?


Hang on. The version of Basic Screen Effects that I’ve got – version 7 – does not have an “AltDeepStatus” function. It has the lines:

To deepen the/-- status line to (depth - a number) rows:
(- DeepStatus({depth}); -);

This is “Basic Screen Effects.i7x” in the current Inform package, as I last downloaded it from the web site.

I’m guessing that AltDeepStatus is something that you created as part of trying to create a working alternate. But just in case, I’m mentioning it.

(When I try the code sample, it works correctly for me, both Z-code and Glulx. MacOS 10.8.3.)

For the record, the VM_StatusLineHeight function (Z5/8 version) looks like:

[ VM_StatusLineHeight height;
    if (statuswin_cursize ~= height)
        @split_window height;
    statuswin_cursize = height;

The @split_window opcode is the one that sets the status window height. There’s nothing wrong with that code. (As noted, it works correctly in other interpreters.)

By all evidence, this is a bug in the MacOS UI library shared between Mac Zoom and the Mac I7 IDE. However, it’s not a simple bug, or it would fail for everybody. I strongly suspect that there is a memory-handling bug and the symptom will always be flaky.

Sorry about that – I forgot to repair the paste. I hacked up the chain of calls to try and isolate the call that froze the game panel.


Hello. I am currently attempting to debug a problem with an interpreter that does a poor job with modifications to the status line. The “Smash Mouth” example in this forum topic was a useful reference. Does anybody else have some examples to share? Are there testing scripts like this to reference on how it should appear in accordance with the Glulx and Z8 standards? Sample code and expected layout appreciated.