Spatterlight v0.5.13b released. Now with Hugo Tetris Support!

A new Spatterlight has been released. Get it here:

Full support for Hugo Tetris, Robot Finds Kitten, The Mad Bomber and ZRacer.

Also proper sound in The Lurking Horror and Sherlock, and a proper map in Beyond Zork.

Read the full change log!


What’s left for v1.0?

Good question!

Mainly fixing up the TADS 3 glitches, I’d say. The flickering status bar is extremely annoying, and it changes colour in unexpected ways when you switch theme or turn styles on and off.

I have lots of ideas and things I’d like to do, but many of them can probably wait until after 1.0, so that I don’t break everything again. The preferences could definitely do with some polish, at the very least tool tips for the more obscure stuff.

EDIT: I also have a hunch that there are plenty of crashing bugs still hiding. Spatterlight has always been too big for a single person to test properly, and I’ve kept adding stuff over the years. Some regression tests would be nice to have.

I’m happy you used Robot Finds Kitten to test this.

In my opinion, no Z-machine interpreter is complete until Robot Finds Kitten is working.

By the way, it seems full RFK support in Gargoyle is coming:

1 Like

What kind of changes did you make for Hugo? Are you using the Glk interface for it? Are they changes that would make sense to move upstream?

Likewise for TADS, if your changes make sense outside of Spatterlight it would be great to copy them to the Garglk repository (for lack of a better upstream home.)

While I’m happy to upstream anything that isn’t too terrible (and I have some PRs and issues open at the Garglk repository), the Hugo code in Spatterlight definitely is. I’m too embarrassed to even link to it.

No shade on Tor Andersson and his original code, which was clean and sensible enough, but my attempts to make it work with games with more complex “window models” such as Cryptozookeeper, Necrotic Drift and (worst of all) Future Boy, has created a complete mess, and I’ve been hard at work the last week or so making it messier.

It completely bypasses the Glk windowing concept of split windows, but still tries to squeeze the individual windows (internally more like text blocks or square areas on a grid) into Glk counterparts. In my opinion it makes the Hugo games look nicer, but the model is very brittle and everything breaks apart if you change the settings or window size while the game is running. And the code is just horrible to look at. I’ve made several attempts to redo it all from scratch, but it always ends up worse than it was originally.

On the other hand, parts of the sound code modifications may make sense to upstream to Gargoyle. They basically add support for the additional formats that Hugo games use. The same goes for the text color support for TADS.

I just wanted to say thank you for caring about Hugo and trying to make it perform nicely. I really, really appreciate it, Petter. :slight_smile:

1 Like

The Spatterlight-specific Hugo stuff is probably one of the areas where new contributors could most easily make improvements, if only because the current state is so abysmal. Also, it is written in pretty straightforward C. The caveat is that just like in Gargoyle all the interpreters run in separate processes, so in order to debug in Xcode you have to do a special dance.

I made another release with a nice new colour-swap button. It would be great if any Mac users out there could give it a try.

1 Like

The color swap works great.

1 Like

Great! The real reason I added it is that it actually varies a lot between interpreters and games which of the two chosen colours that ends up as text and which one as background in the status bar, and I have no idea of how to make it consistent. So I thought I’d at least make it easier to change.

Wait a minute. You fixed all the things you said you were gonna fix for 1.0! You may have a serious case of 1.0-ophobia. :wink: (einophobia??)

1 Like

It is a bit of a chicken and egg problem, but the lack of users and contributors and the unwieldy codebase means that Spatterlight is very untested and buggy. Every time I take a close look at some part of the code I notice new broken things. This is pretty much the way these things work, and I could mention a couple of similar projects out there with similar problems, but it makes me reluctant to call it 1.0. I suppose a compromise may be a 0.5.5 release, dropping the b.

May I suggest a bug bash? Make a spreadsheet of stuff you’d like tested, let people declare parts tested, until eventually the whole spreadsheet will be done.