Planet IF is a place where blog posts about Interactive Fiction from various people are collected.
For additions and removals, please contact Christopher Armstrong at [email protected].
You can follow this feed on Twitter at @intficblogs.
Unfortunately, Twitter's new API pricing means that you can no longer follow this feed on Twitter.
When it comes to limits in Hugo, authors are most familiar with the static limits that can be viewed or modifiable ones that can be set at compilation time. If a game needs more arrays or routines than the system default, great, we change a value and we're good to go.There are other limits in Hugo to be aware of, though, as discovered by Robb Sherwin. More than a year ago, he noti
There are other limits in Hugo to be aware of, though, as discovered by Robb Sherwin. More than a year ago, he noticed that some rooms defined late in the code in his WIP were not accessible. I had a chance to use the Hugo Debugger on it and could see how, for no discernible reason, the code execution would just go off the rails once it reached the applicable object. Changing the order of file inclusion made this object accessible while presumably breaking something else.
We figured at the time that some limit (besides the ones already mentioned) was being overwritten, resulting in a pocket of a corrupted code. We couldn't deduce which limit we were running into, though. It was time to consult either Kent Tessman himself or someone else well-versed with the Hugo file format. We try to not bother Kent too much, though, as creating Hugo shouldn't be a CURSE OF ENDLESS QUESTIONS. He has more important, family-providing things to attend to (buy Fade In Professional Screenwriting Software today!). Similarly, we didn't want to bother others who have already done so much for Hugo, so the issue just kind of sat for a while.
Recently, it came up again and we tried to look at the problem with fresh eyes. I pointed Robb to Juhana Leinonen's Hugo .hex file inspector page, which verified that objects were redirecting to other things.
He also brought the issue up to Kent around this time, and Kent suggested that either the dictionary or properties table was the culprit. Robb took out some words and things, and voila, everything works now.
So, the problem was solved, but I still wanted to find out what tools Hugo authors have to check for this. The issues comes down to the design of the Hugo .hex file, which allocates 64K to the dictionary, special words, array space, events, properties, and objects each. Hugo was designed to make games playable on 16-bit devices and these limits reflect that. In Robb's case, he was surpassing that 64K dictionary limit.
One of the quirky things about Hugo is that it has a lot of great features that the documentation doesn't fully explain- either their usage or the situations in which something is especially useful. Despite the fact that the compiler didn't complain about a too-big dictionary table, I figured that there must be something in there since, in my opinion, Kent really did a great job in planning for a lot of scenarios.
So before I wrote this post, I thought I'd look over the compiler switch options again (since there are several that most Hugo authors rarely use), and indeed, there is a -u switch that shows the memory usage of a compiled game.
Here is an example of a memory usage readout:
(Top: $013F44)
+-----------------+---------------+
| Text bank | $001054 bytes |
+-----------------+---------------+
| Dictionary | $0B60 bytes |
+-----------------+---------------+
| Special words | $0080 bytes |
+-----------------+---------------+
| Array space | $0CE0 bytes |
+-----------------+---------------+
| Event table | $0010 bytes |
+-----------------+---------------+
| Property table | $0680 bytes |
+-----------------+---------------+
| Object table | $0700 bytes |
+-----------------+---------------+
| Executable code | $00FB60 bytes |
+-----------------+---------------+
| Grammar table | $0D00 bytes |
+-----------------+---------------+
| Header | $0040 bytes |
+-----------------+---------------+
(Bottom: $000000)
So, the values are in hex so authors have the extra step of converting them to decimal, but hey, it can give us a general idea if we're approaching any of those table size limits.
At some point, I will probably take a look at the compiler source and see if it's within my simple capabilities to check for these limits. In the meantime, I'll probably add a page to Hugo By Example drawing attention to this. Of course, this whole issue only happens in a game with a lotof stuff so it's possible that Robb will be the only one to ever run into it!
(Continued from my previous posts.) I’ve finished the game, and as predicted, there was not much left to go. I was left before with a crystal rod and a related curious hint. I have no idea what this hint means. What I instead was eyeballing was the “hole in wall” in the description. I was […]
I’ve finished the game, and as predicted, there was not much left to go.
I was left before with a crystal rod and a related curious hint.
I have no idea what this hint means. What I instead was eyeballing was the “hole in wall” in the description. I was mentally equating that with the DOWN exit; there have been many games where a listed “background item” simply corresponds to a direction, but given I was horribly stuck, it was worth checking if that was really the case.
Anyone with an idea what the deal with the message was? I also was thinking in a structural-solving sense, insofar as the harpoon and rope make for one of the more elaborate puzzles in the game, yet the end result seemed to just be a relatively weak hint (like how the bottle from the ocean also just had a hint, one I didn’t even need because I had already solved the relevant puzzle!
Going inside the new passage, there is a vault, and now is when that number on the island gets applied:
(Of course, there is absolutely no reason whatsoever a sunken ship would have its combination clued by numbers written on a nearby island.. This is one of those adventure-things that gets handwaved off generally, but it really is so much more absurd than “the color on the windowsill matches the combination five rooms away” here; the game is clearly detached from reality in a “gonzo” sense where anything can happen.)
Sorry, not much update even with the analysis there! That’s the risk with adventure game blogging; you sometimes end up stopping right at the end. I do have one historical update, though:
From a Molimerx ad for the Epic Hero series, Computing Today January 1983.
I found the ad above in a January 1983 magazine (which was on newsstands, so it really was up in December ’82); that means I can drop the 1982/1983 business and stick this and the other two Epic Hero games in the Year 1982.
This game did not seem much like we were being heroic or epic, though? I could see calling a series that and diverging later into less epic material, but with this as the first in the series, it’s a curious naming convention. Perhaps Epic Hero games 2 and 3 will live up to the picture.
But for now, coming up: a wildly unusual mainframe game recently rescued and unlike anything featured on this blog before.
We’re proud to announce that Hearts in Hades: Divine Passion, the latest in our “Heart’s Choice” line of multiple-choice interactive romance novels, is now available for iOS and Android in the “Heart’s Choice” app. You can also download it on Steam, or enjoy it on our website. It’s 40% off until February 19th! Seduce the man of your dreams as the godd
We’re proud to announce that Hearts in Hades: Divine Passion, the latest in our “Heart’s Choice” line of multiple-choice interactive romance novels, is now available for iOS and Android in the “Heart’s Choice” app. You can also download it on Steam, or enjoy it on our website.
It’s 40% off until February 19th!
Seduce the man of your dreams as the goddess of nightmares! Will you honor the gods of Olympus or consolidate power and rule the Underworld?
Hearts in Hades: Divine Passion is an interactive fantasy romance novel by Lidia Molina Whyte. It’s entirely text-based, 160,000 words, without graphics or sound effects, and fueled by the vast, unstoppable power of your imagination.
As the daughter of Hades and Persephone, you dwell in the Underworld as the goddess of nightmares, haunting mortals’ sleep and maintaining the tenuous alliance between your realm and Olympus. The Fates have woven you a path to the Messengers’ Council, where you work with Morpheus, god of dreams, and Hermes, leader of the Council.
Now, as rumors of an uprising by Giants begin to stir, and these ancient enemies attack, both Olympus and the Underworld will descend into brutal warfare.
Your parents are keen to strengthen the alliance between the realms by marrying you to Ares, Olympian god of war. Such a unified show of power might stop the slaughter before it starts. But is that what you want? And is that truly what is best for the gods?
Then again, perhaps this political match might be a love match after all. You and Ares were friends as children, and now he is a bronze-haired broad-shouldered vision of strength, rippling with muscles and encased in armor. Yet his warm hazel eyes and adorable dimples are the same, betraying his inner sweetness. How can the god of war give such tender kisses?
Or perhaps you wish to defy your parents’ will? What about your counterpart Morpheus, god of dreams? Smug, silver-haired, infuriatingly handsome, he flits in and out of your life on iridescent wings, leaving honey-scented poppies and satisfied lovers quivering in his wake. He’d be delighted to dominate you in bed, but perhaps you’d prefer to take charge, deciding exactly when, how, and where he’s allowed to come.
Or you could leave the gods and their games behind. There is one mortal who does not fear you, despite the nightmares that you have sent him: Theron, lord of Leukas. He has dark curls, sad eyes, a bittersweet smile; the clever rugged hands of an artisan and the easy power of a true ruler. Can you find true love under the mortal sun?
Play as a goddess romancing male gods and mortal men.
Romance the surprisingly sweet god of war, the smugly seductive god of dreams, or the charming mortal lord who doesn’t fear you.
Control a horde of shadow daemons, and choose their animal form.
Match wits with Hermes, supporting him as leader of the Messengers’ Council, or overthrowing him.
Beat Medea at an Ancient Greek game of strategy.
Pet Cerberus, the bone-chilling three-headed hound guarding the merciless gates to the Underworld.
Inspire a clutch of dragon eggs to hatch, and then pet those baby dragons.
We hope you enjoy playing Hearts in Hades: Divine Passion. We encourage you to tell your friends about it, and recommend the game on Facebook, Twitter, Tumblr, and other sites. Don’t forget: our initial download rate determines our ranking on the App Store. The more times you download in the first week, the better our games will rank.
(Continued from my previous post.) First off, some corrections to statements in my last post: two of the Colour Genie games (from the “Colour Quest” series published by Gumboot) are by Dave Doohan, not Leduc. Leduc is listed on game 4 (Camelot) as a co-author (I’m guessing as authoring the “engine”), and while I don’t […]
First off, some corrections to statements in my last post: two of the Colour Genie games (from the “Colour Quest” series published by Gumboot) are by Dave Doohan, not Leduc. Leduc is listed on game 4 (Camelot) as a co-author (I’m guessing as authoring the “engine”), and while I don’t have a copy of game 5 (Shipwreck) to test and check credits, I now know what the box art of a republished version looks like, and I’m using the word “republished” very loosely.
Game 6 (Fishing Quest) goes back to Leduc but seems to be a remake of Ocean Hunt. So in total he has 6 games, not counting one remake and at least one (probably two) co-authorship credits.
West goes to the garden and north goes to the shop.
I otherwise haven’t seen any differences up to the point where the boat ends up in the ocean.
As promised last time, I whipped out the verb list and tested everything out. Fortunately, the game was pretty good about giving feedback if a word is not in its vocabulary (it explicitly says ‘”WORD” is not in my vocabulary’).
It’s a four letter parser, so the difference between SCREW and SCREAM was unclear, but otherwise the list was unambiguous. I found with TALK on the merchant that he says to drop all treasures at the shop (there’s only two we’re looking for, remember). While noodling around with START I realized it worked on the boat while holding the keys (even if you’re not standing on the boat! I guess there’s a remote keyfob, from, er, 1982).
It turns out you don’t have to worry about the boat floating away, you just need to specify you want to move it somewhere. Unfortunately, that always seems to be hell in adventure games, and here is no different. I finally checked the walkthrough to realize that HEAD DIRECTION works, and later got (what I think is a more reasonable) STEER DIRECTION. The thing that makes this even more bizarre is that it does NOT work in the directions north or south.
“I am not quite sure what you mean” is the same message it gives for a complete whiff of a command that is not understood, but all that’s really going on is you can’t steer north or south! The general layout is:
island – ocean – wharf
So if you want to buy the reel after the boat floats away (since getting the money causes the event to happen), just start the boat and steer east. You can then BUY REEL without getting killed by the shopkeeper, and take it back out to the ocean to THROW REEL.
The MESSAGE has “a drawing of a man entering blue flames”, and I only found it after I got through the relevant section of the game, so buying the reel is technically optional! (I think. I’m not quite done yet with the game.)
Regarding jumping in the ocean with the sharks, and drowning if I tried to SWIM DOWN: I had missed an item on the boat. Back inside where there’s a bed, I had found I could GO BED and find items on shelves, but confusingly, you can LOOK BED twice to find two more items (that you don’t see actually going on the bed, because early 80s adventure logic).
The purple pill makes you feel GASSY and allows you to swim underwater (the pill does eventually run out, but it takes a while). The flashlight is the standard LIGHT/UNLIGHT kind and I’m guessing it also eventually runs out (but again, pretty generous on the timing).
from here you can swim along some “ocean floor” rooms and it took me a while to understand I was in a maze; I’m used to underwater ocean rooms being more of a grid like The Palms, although to be fair that game had some confusing exits as well). You can map it with the standard “drop items” technique that dates all the way back to Crowther Adventure.
Just like The Palms, there’s a crashed boat, but in this case something about it doesn’t make sense (and I had to use the walkthrough again).
The inside has a harpoon gun and a telescope. LOOK TELESCOPE just says you see your eye; I tried taking the gun over to the sharks and shooting them but the game didn’t understand what I wanted.
Trying to GO STAIRS kills you in a hilarious and confusing way.
What I was not understanding is that the inside of the liner is not underwater. You can’t swim to the hole, you have to actually tie the rope to the harpoon, and then fire it in the hole and climb the rope. I simply followed the walkthrough steps in bafflement, and then had to stare at what happened for a while before I realized what the game was meaning. (I haven’t needed the walkthrough on anything else, but I also haven’t finished the game yet.) I suppose the weird stairs message might have been a clue but generally this game is styled around a tenuous grasp of reality anyway (which is fine story-genre-wise, but it makes puzzles harder to solve!)
We will get back to “crystal does’nt cause explosions” later.
The fact there is only a message suggests the harpoon thing might have been optional anyway; I don’t know. But let’s move on to the island! STEER WEST while out in the ocean:
Note the 4737 you can see with the telescope. I think this use was being hinted at by the note at the shopkeeper, when it referred to looking at an island closely. I have not applied the 4737 clue yet.
Everyone loves the self-insert. If you LOOK LEDUC:
He’s writing the next Epic just for you!
The woman is a little more trouble. She blocks the way in the cave, and “looks hungry”.
There are two food options. One — the more obvious one — I’m fairly sure is wrong. You can GIVE SALT and she’ll say “Fish and Chips!” and disappear.
Alternatively, you can give the candy bar. She “turns green and dies in agony.”
Considering you could eat the same bar and it was delicious, I assume she’s meant to be some sort of demon. Except maybe a British demon because of the Fish and Chips reference? This feels like some sort of inside-Nottingham joke I’m missing (remember all three Epic games were made in 1982 before being published in 1983, so likely were treated more like a “private” games by the author, just like with Campbell’s Fairytale).
I think the candy bar is right because you need the salt shaker later.
Going inside the cave, there is a “mouth”, which looks like it ought to be just a geographic feature…
…but is just an actual mouth. I don’t know if this is simply a gag like the quid/squid or something that gets used later.
Going north instead, there’s a room with a green, red, and blue stone; the stones can’t be taken. There’s an arch, and if you go in the arch, the room “feels wrong” although you can take the metal rod there seemingly without hurting anything.
TOUCHing the stones is the answer (thank you verb list!) as they’ll glow either green or red as you touch them, suggesting a combination lock. I eventually got into a “sacrifice and altar room”.
The next bit is hard to find, but the two solutions with the woman suggested (in a structural-solving sense) either the chocolate bar or the salt were still important. The salt turns out to be needed:
You can then GO FLAME; hinted at by the bottle in the ocean, although I want to re-emphasize I did this prior to getting the hint. The “sacrifice” thing seemed suggestive to me!
The diamonds are a regular treasure that you can deposit at the store right away; the crystal rod is not. I have no idea what to do with it. The message underground said something about it not being explosive but I haven’t been able to translate that into action.
Just to recap my items: fishing reel, shark repellent, crystal rod, telescope, metal rod (from the “bad” arch exit), keys, flowers, blanket, harpoon gun, squid, and some various messages. I suspect I just need to do the right thing with the crystal rod but I haven’t chanced upon it yet. We may get a win in a single puzzle, or it might still be a couple. Either way, I don’t think there’s too much farther to go.
One of the more amusing tape covers from Gumboot. That’s “Jet Set Billy”, not “Jet Set Willy”. Legally distinct! From the Centre for Computing History.
In my last post, I asserted that it was not a bug that the cyclops did not fight. (Not according to the combat rules that govern the troll and the thief, anyway.) There was some Patreon and Discord discussion about that; I'm pulling it out into ...
In my last post, I asserted that it was not a bug that the cyclops did not fight. (Not according to the combat rules that govern the troll and the thief, anyway.) There was some Patreon and Discord discussion about that; I'm pulling it out into a new post.
(Is my blog going to just be a stream of Infocom trivia for the next two years? Maybe! I'm winging it here.)
CNT = 0
repeat {
CNT++
if (CNT == LEN) return
OO = VILLAINS[CNT]
// this monster attacks
}
The VILLAINS table is an LTABLE, meaning it starts with a length field (3). Then entry 1 is the troll, entry 2 is the thief, entry 3 is the cyclops. The loop exits as soon as CNT is 3, so the cyclops never attacks. Simple.
The interesting comparison is Mini-Zork. This was a cut-down Zork, meant either as a demo, a more approachable game, or a version that would run on a cassette-based C64 -- I'm not sure of the precise story.
(Mini-Zork was the first ZIL code to circulate publicly, earlier than the big Infocom source release of 2019. So it got a lot of scrutiny.)
The point is, Mini-Zork has essentially the same logic, except the cyclops has been removed from the VILLAINS table. (His combat responses have been removed as well.) So the table LEN is 2, and the thief never attacks. That is clearly a bug. And the buggy line is <EQUAL? .CNT .LEN>.
(<==? .CNT .LEN>, because this version of ZIL let you abbreviate the operator. Means the same thing though.)
So am I really saying that the same line of code is a bug in Mini-Zork but not a bug in Zork? Sure! A bug is when the code doesn't do what you want. Infocom manifestly wanted the thief to fight but not the cyclops.
What's happened here is that a developer (probably Lebling or Blank, but who knows) made what should have been a simple change: removing one entry from a table. The table length wasn't hard-wired; everything that relies on VILLAINS checks its length. So the change should have been safe, but whoops, it wasn't. It resulted in a bug in Mini-Zork.
That wasn't a bug in the original game. It's what we call "an accident waiting to happen", or a "booby-trap", or a rake or a footgun, or, you know, bad code. Different situation entirely.
(Not a criticism. All IF games are made of bad code. It's just the nature of the beast.)
Let's compare a different bug (non-bug?) which also popped up in Discord discussion.
The strange machine in the depths of the coal mine is defined this way:
You can refer to it as a MACHINE, or a DRYER (the description says it's "reminiscent of a clothes dryer"), or a LID (so that OPEN LID is a synonym for OPEN MACHINE). Or you can call it a PDP10. A PDP-10 doesn't look anything like a dryer (fridge, sure) but any Zork insider would be familiar with the thing. Both MIT Zork and Infocom's version were developed on PDP-10 hardware.
So, great in-joke. Except it doesn't work:
>examine dryer
You can't see any dryer here!
>examine pdp10
I don't know the word "pdp10".
(Infocom's parser reports unknown words whether you've found the item in question or not. So you don't have to journey to the Machine Room to test this.)
Here's a how-de-do! What happened?
To answer this, we must dig into the ZIL dictionary format. These words (MACHINE, DRYER, etc) aren't stored in plain ASCII. They're compressed using the Z-machine's text compression scheme.
In short: a Z-machine character is five bits. A dict entry is exactly four bytes -- two 16-bit words -- with three characters packed into each 16-bit word. So that's a maximum of six characters. The last word has a "stop bit" (the sixteenth bit) indicating that it's the end of the string.
(Then there's three flag bytes at the end of the entry, but those aren't relevant here.)
The six-character limit is well-known. You can type EXAMIN LANTER and the game will accept it. What's not so obvious is that some symbols are more expensive. Five bits isn't enough to distinguish every typable character, after all. So digits and punctuation are actually multi-character sequences: a "shift" code followed by a shifted value.
So the word PDP10 gets encoded as the sequence PDPshift1shift0, or:
10101 01001 10101 00101 01001 00101
P D P shift 1 shift
The final 0 gets cut off, because it's the seventh Z-character.
Like I said, lots of game words get truncated. What's different about this one? It's truncated in the middle of a multi-character sequence. Apparently Infocom's ZIL compiler gets confused by this and omits the stop bit! (Remember the stop bit?) And that confuses the parser, so the word can never be matched.
I looked through the game dictionary and found another example of a missing stop bit. (I wasn't the first to do this.)
<OBJECT DAM
(IN DAM-ROOM)
(SYNONYM DAM GATE GATES FCD\#3)
(DESC "dam")
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION DAM-FUNCTION)>
The backslash is just a source-code escape. This synonym word is supposed to be FCD#3 (Flood Control Dam #3), but again, the word is not recognized.
So the inevitable question: is this a bug? If so, where?
It could be an interpreter bug. After all, the text encoding spec I mentioned isn't an Infocom document. It came out of the IF community of the mid-90s, a time when we didn't have any Infocom documentation. Maybe the game is correct and my interpreter is wrong!
Zork 1 running on an Apple //e emulator, courtesy of the Internet Archive.
Scratch that idea. My interpreter is behaving correctly, or "the same as Infocom's interpreter", anyhow.
At this point, I'd be happy to call this a bug -- an inferred bug in Infocom's compiler! But in fact we can observe a bit more evidence. Take a look at this object definition:
<OBJECT TREE
(IN LOCAL-GLOBALS)
(SYNONYM TREE BRANCH)
(ADJECTIVE LARGE STORM ;"-TOSSED")
(DESC "tree")
(FLAGS NDESCBIT CLIMBBIT)>
This is a scenery object found all over the outdoors. A couple of locations say "Storm-tossed trees block your way", so they threw in STORM as a synonym. But the -TOSSED part is commented out.
Why? We don't have source code from earlier Zork 1 releases. But we do have compiled game files, and several of them have the word STORM -- with a missing stop bit.
Clearly, this was compiled from the word STORM-TOSSED, and ran into the same compiler bug. But this time, the developers noticed. They figured out what was wrong, and commented out part of the word to avoid the problem. But they missed the parallel situations of PDP10 and FCD#3.
We can also compare Zork 1 release 119, a late development version (never released). This has all the stop bits where they should be. All the funny words work. So by 1988, Infocom had fixed the compiler bug.
Whew. I've either completely narcotized you or opened your eyes to the many dimensions of Infocom game file analysis. Tune in next time when I count every individual one of the 69105 leaves!
The Boston IF meetup for February will be Monday, February 16, 6:30 pm Eastern time. We will post the Google Meet link to the mailing list on the day of the meeting.
The Boston IF meetup for February will be Monday, February 16, 6:30 pm Eastern time. We will post the Google Meet link to the mailing list on the day of the meeting.
In the April 1984 edition of Imagine magazine, intended mostly for tabletop gaming, Mike Costello (editor of Wargame News and Warmachine) started a column devoted to home computer gaming. Many readers will already be familiar with the Adventure games that have been available on nearly all micros from the dawn of microcomputer history (about 1976). […]
In the April 1984 edition of Imagine magazine, intended mostly for tabletop gaming, Mike Costello (editor of Wargame News and Warmachine) started a column devoted to home computer gaming.
Many readers will already be familiar with the Adventure games that have been available on nearly all micros from the dawn of microcomputer history (about 1976). These sub-divide into a number of different types. The text-only Adventure is the most widespread, not because it is simpler than the others but because it is easier to rewrite a program of this kind for a variety of machines. The Scott Adams Adventures are the best known, but a number of authors have tried their hand at this type of game. In the UK, the machine-code Adventures by Marc Leduc and Brian Howarth have become well known to TRS-80 users, and the Brian Howarth Adventures are now being rewritten for a number of other machines.
Brian Howarth we’ve now seen quite a few times now (with games like The Arrow of Death and Circus); he’s given enough direct interviews that his history is mostly well-understood. (The exact story behind him switching to using the Scott Adams database format for his games is still messy, but at least we know enough about him for there to be a historical riddle in the first place.) Marc Leduc, mentioned in the same sentence, has not yet had any coverage here at all, and he’s had very little attention from modern writers.
The TRS-80/Genie Users Group of Nottingham was founded in 1980, meetings twice a month at the Wilford Moderns Rugby Club House. They had a club magazine, LPRINT, edited by Geoffrey Hillier.
Marc Leduc was the chairman; what is unusual is he was also the chair of a second group, the National Colour Genie User’s Group. They had their own distinct magazine, Chewing Gum.
THROUGHOUT THIS MONTH’S MAGAZINE, YOU WILL FIND LOTS OF PROGRAMS TO TYPE IN. WE HOPE YOU ENJOY THEM ALL, AND WOULD LIKE TO TAKE THIS OPPORTUNITY TO THANK ALL THE AUTHORS FOR THEIR TIME AND EFFORT.
I’ve gone through before how the Video Genie was a clone from EACA of the TRS-80; in Germany, the Video Genie name established itself well enough that EACA produced a color version. This was made without reference to the Tandy Color Computer. That is, even though the company started with a clone, they used that as a basis to make their own machine. Tandy’s CoCo is a hardware reset of sorts; the Colour Genie is instead more along the lines of “let’s just take a TRS-80 and add color to it”.
It is ultra-rare and mostly only known in Germany (where the Genie name held more stock than Tandy’s for historical reasons I’ve gone into detail about before). However, it did make it over to the UK, where it flopped in sales. Notice how Leduc is chair of a local TRS-80 group but a national Colour Genie group. The Colour Genie group even ended up making their own publishing label, Gumboot.
Leduc’s first Color Genie Game, via the Centre for Computing History. We’ll get back to this game in the future.
There’s a recollection from 2021 of the user group via Bernard Telemoid, who might have been the artist? Except there was a second cover from Gumboot used on their games generally, so I’m not sure which is his. Note Telemoid is not positive about Leduc’s games but I’m going to decide about that on my own (…weird to call adventure games in general “Scott Adams rip offs”…).
i used to go to the TRS-80 users group (later became the TRS-80/Video Genie user group, mainly cos my dad had started selling VG’s and he lobbied for the change) with my dad in the early/mid 80’s, held in a rugby club in wilford weekly, loads of great characters and discussions about EEPROM writing, machine language, programming the Z80 and the sublime beauty of the RS-232 interface (still a standard in many high level computing connections) of course i went for the crisps and fizzy drinks and of course the other children of electronics engineers, medical physicists and mathematicians.
It was through this i got my first paid work in the arts, designing awful cassette covers for Marc Leduc’s awful Scott Adams Adventure rip offs like ‘Find The Diamond Of Balmorlan’, i think it was he who showed me that if you press ‘break’ you could view the guts of the program and edit your own narritive into it, so i remixed a shit maze chase game into ‘Death Droid’ and gave it to people at school.
The Nottingham group was so prominent in the English-language Colour Genie space (essentially victory by default) that when EACA wrote a BASIC manual for the Colour Genie, it came with a free tape containing programs from the group.
Leduc wrote three games for TRS-80/Genie and then six for Colour Genie. The three for TRS-80 eventually ended up published by Molimerx (prior background here), and Harding’s spiel about the game is in his usual style of “honesty with no attempt at marketing spin whatsoever”.
“Although Brian Howarth’s series, Mysterious Adventures, essentially monopolizes the TRS-80/Genie (and now many other machines) adventure market, other English authors are still writing adventures from their own particular discrete viewpoint.” In other words: I know who my best-selling author is, but have you considered buying an adventure game from a different author?
A December 1982 catalog does not contain the game so it appears to not have been officially published until sometime in 1983, but awkwardly, not only did Leduc finish all three Epic Hero games with a copyright of 1982, he started his new Colour Genie series in 1982 as well. Especially given the role clubs played during this era in distribution (with “libraries” of games for sharing), I think it likely Epic Hero made it out at least to the local Nottingham area before being published; adding on the fact the Colour Genie games ended up more-or-less self-published, is a date of 1982 or 1983 more appropriate? (CASA uses 1983.) I’m listing both in the title but sorting in 1983 for now, but it’s possible some issue of LPRINT will emerge that throws this for a loop (I haven’t been able to find any copies). ADD: This lands in 1982; see the last post in this series.
I don’t have anything detailed yet about Leduc himself, other than based on his dedications to his wife and kids in various games I think it is safe to say he was not one of our 15-year-old prodigies.
Our goal is to go to the ocean, retrieve two treasures, and come back.
The Charlau I was puzzling over for a while as it is just described as a “beaut” but it is actually the name of a houseboat. Let’s stick with land first, by going east:
There are flowers hiding keys (your keys, I presume, since they go to the boat you end up heading to the ocean on). You can also climb the tree to find a rotten hole with a salt shaker.
From the wharf, picking up the quid and instead going south:
That’s not a quid, that’s a squid. Hilarious. (It likely borrowed this moment from Mystery Fun House with the “five dollar bill” but without the existential confusion of now carrying what I assume is a large squid.)
The leaflet just hints “Look closely at Kikimawa Island” which I haven’t gotten to yet; you can try to just take the reel but the merchant just shoots you. (Similar to The Golden Voyage, if we’re staying with the Scott Adams references.)
Hopping onto the boat, there’s a rope and a bar of chocolate (you can eat the chocolate, and the game says it is delicious, but with no further effect; I don’t know if this is a red herring style game yet or if everything is important). The door unlocks with the keys from the flowers.
Inside you can climb up to a bed and find shelves with some shark repellent and some money (as long as you LOOK SHELVES more than once, but that’s pretty standard for this era).
After going inside (and only after going inside, this is essentially an event-based trigger rather than a time-based one) you find that the boat has now moved and you’re in the open ocean.
I would assume the rope could be used to tie the boat to the wharf, but I’ve tried TIE ROPE / WITH NOUN on every feasible noun both on the boat and on the wharf. I’m not sure what’s going on. The money presumably should be used to buy the reel before we take off for the ocean.
Even with the path being “wrong” we can still do a little preview of what it is like jumping into the ocean. It’s fine as long as you are holding the “shark repellent”, and I’m not sure what to visualize that as.
The only way (seemingly) to go is down, or more specifically SWIM DOWN, but that just causes drowning.
I think I need pull out the bigger guns on this parser to make any progress. If all else fails, there is a walkthrough, but this is the only Leduc game out of his nine that has one, so it’s better for me to try to figure out his mindset as much as possible now while I still have a fallback. Everything is in machine code so I can’t just expect to prod at BASIC source code on his later games.
Seduce the man of your dreams as the goddess of nightmares! Will you honor the gods of Olympus or consolidate power and rule the Underworld? Hearts in Hades: Divine Passion is an interactive fantasy romance novel by Lidia Molina Whyte. It’s entirely text-based, 160,000 words, and a 4/5 peppers on the Heart’s Choice spice level rating! I sat down with Lidia to talk about her upcoming gam
Seduce the man of your dreams as the goddess of nightmares! Will you honor the gods of Olympus or consolidate power and rule the Underworld?
Hearts in Hades: Divine Passion is an interactive fantasy romance novel by Lidia Molina Whyte. It’s entirely text-based, 160,000 words, and a 4/5 peppers on the Heart’s Choice spice level rating! I sat down with Lidia to talk about her upcoming game and how a journalist and fiction writer moves to interactive romance.
This is your first time writing interactive fiction but you have a broad background as a writer in general. Tell our readers about yourself!
I have been writing professionally for about 12 years. I started out as an editorial assistant for a local food and culture magazine while I was still at university. I went on to complete a master’s degree in creative writing (though I firmly believe formal education isn’t necessary to be a writer) and have since worked across a variety of mediums including comics, short stories, film, and even an interactive walking adventure. Hearts in Hades is the longest project I’ve finished to date, but I’m currently working on my second long-form project, a fantasy novel inspired by Die Hard. I’m also an editor and regularly help writers get their manuscripts in good shape before they go on sub or are published. I’m not at the stage where I can survive off my creative writing and editing income alone just yet, so I also work as a copywriter and a media, film and TV journalist. There’s a lot going on, but it keeps things interesting!
This game started out with very little spicy content, but as you found your feet, it felt like a natural fit for the story being told. What drew you to the Greek gods for this setting and that kind of content?
I have always been a huge Greco-Roman mythology nerd. Before I pitched to Heart’s Choice, I had been toying with the idea of writing something inspired by the Orphic Hymn to Melinoe, but I wasn’t sure what shape it might take yet. At the time, I was going through a Hesiod phase, had just finished Madeline Miller’s Circe, and was enjoying Emily Wilson’s translation of The Odyssey, so I was very much in the mood for a setting involving gods, mortals and fate. I’m also a big fan of fantasy with strong and complex romance subplots, so it felt like a natural fit; Greek mythology is full of epic love stories (although most of them are extremely dysfunctional by modern standards).
Still, after the pitch was accepted, I was a little hesitant to go all out on the spicy content, even though the source material I was drawing from had no shortage of references to it. I was already stepping out of my comfort zone by tackling interactive fiction. The prospect of learning to code and getting comfortable with a whole new approach to characterisation was daunting enough. Did I also want to add writing fully explicit scenes for the first time to the mix? Once I got to writing, though, I realized I didn’t want to hold myself back like that. I’m so glad I did, because even though they were super challenging to get right, those scenes ended up being some of the most interesting to write. And fun, too!
The romances in this game are intense. If you had to choose, do you know which romance option you’d prefer?
That’s a tough question! I challenged myself to write each romantic option as compellingly as possible. Basically, I wanted to make it really hard for players to choose. I think I might’ve succeeded because I’m struggling to pick myself. I’m a huge enemies-to-lovers fan so I would probably be drawn to Morpheus in a first playthrough. There’s something irresistible about two characters being their worst, pettiest selves with one another and working backwards from there into falling in love. Though I would find it difficult not to romance Ares as soon as he gave me cake, or Theron following that first encounter on his balcony. So it truly would be anyone’s game, I think.
What did you find most surprising about the writing process or the stories you ended up telling in Hearts in Hades?
So many things on both fronts! The most challenging part for me was learning the code. I’m not a very technically-minded person, and I’m atrocious at maths. But once I got to grips with it, I was very surprised at how this style of writing shifted my perspective on storytelling as a whole. I had to do a lot of internal rewiring, but it’s been so worth it. I ended up finding a lot of satisfaction in attacking the same problem in a variety of different ways, and loved not being confined to a single narrative. A specific element I didn’t anticipate would be so rewarding was writing failure scenes. I often found myself trying to make them as narratively enticing as the successes, despite potentially leading to negative consequences or outcomes.
What games do you enjoy playing yourself?
Perhaps unsurprisingly, I’m a big Hades and Hades II fan, and though I beat both games a while ago, I keep going back time and time again. Still also playing Baldur’s Gate 3 regularly (I don’t think I’ll be able to stop until I’ve romanced all the characters). One of my all-time favourite games and the one that inspired me to try out interactive fiction is 80 Days, which I usually replay once a year. On the tabletop side of things, I love playing D&D and very occasionally dabble in DM-ing. My husband and I also enjoy starting weekend days with a board game over breakfast. Our current favourite is, perhaps also unsurprisingly, Iliad, but Wyrmspan and Small World are close seconds.
(Continued from my previous posts.) I was missing one reasonably simple (but still hard to find) action in order to escape with the Bluestone; I did try the next part of the game but it didn’t go well. Just as a reminder, I had found a key, the bluestone, a gun, and a memo, and […]
I was missing one reasonably simple (but still hard to find) action in order to escape with the Bluestone; I did try the next part of the game but it didn’t go well.
Just as a reminder, I had found a key, the bluestone, a gun, and a memo, and I was now looking for a way out of the base on the planet of Ariosferia. I received the verbs USE, TAKE, SHOOT, and PUSH from pressing the HELP key.
Kazuma Satou informed me in the comments that I had missed a feature; if you are being prompted for a noun, you can hit HELP in order to get them listed by the game. Hence you don’t have the guess that the GUN is a GUN (assuming you’ve understood this aspect from the instructions).
I went around every surface of the game trying to apply USE, SHOOT, and PUSH in order to see if I could get some kind of reaction. It turns out the end-hallway figures are very different.
This is the end of the hallway on the left. I had actually tried mucking about here before making my last post.
This is the similar looking end of the hallway to the right, and it turned out I hadn’t fiddled with this yet.
I realized if I tried USE the game was asking me for a noun. I went through my held items and found that using the KEY then went back to asking me for a verb again, and I was very confused since it didn’t seem like anything happened, and in fact the game is prompting you for your next turn a specific action, and if you don’t that it resets the variable (that is, you go back to needing to USE KEY again). If you type OPEN right after using the key you reveal hidden switches.
This is an entirely random choice, and there’s no save feature to the game, so after struggling through the combat and going through the sluggish adventure session you now have a one-third chance of just dying. Good luck!
(For me the correct switch was SWITCHA.)
(Immediately after this scene, the game does a LOAD”CAS:” to open the next part of the game. You can theoretically LOAD”CAS:” twice from the start to jump to part 2; only not knowing the password is stopping you.)
We’ve been teleported back to the ship and are ready to go onto the next phase. Unfortunately, the ships are just as irritating and deadly as before. (At least not invisible; the comment in the Oh! MZ guide said something about this but it meant that their movement is invisible; that is, you don’t see sprites smoothly changing places but rather “jumping” between points like an old LCD handheld game.)
Reader, I tried. I tried for far longer than I really ought to have. I tried using Antimicro to map my gamepad to the right keys; while this made playing a little more comfortable, but it didn’t change the fact that the laser movement is outrageously slow compared to how quickly you get destroyed, and this level has the downside of it not being as obvious which planet you’re aiming at (you’re going for something red … I think).
Mid-warp.
Attacked. This enemy is in a good spot, but that’s no guarantee for the next five enemies.
It was time to resort again to hacking.
This is me typing in a replacement line. Compare it with the original two lines up.
After the game had a moment of confusion it brought me INTO ORBIT, closed the spaceship window, and opened it again on a red environment with a dot in the background. I could use warp to get closer and aim but without any enemies around.
The dot was constantly moving to the right so I kept having to adjust my center aiming every few steps of warp.
The controller for the planet launcher is supposed to be a black rectangle.
Once I reached the screen above (and pressed F5, although I am unclear if I needed to do that), a very very long cutscene started. It is long in that it is being drawn on a PC-88 and I found in the end weirdly magnificent and impressive. I would probably not find it so impressive if I died in the scene after and had to redo the entire thing.
I’m showing far more screenshots than usual. Keep in mind each frame lasts about two seconds, and I’ve still cut many of the in-between frames.
And then…
…a sea of monoliths. You now can control movement, using up/down/left/right, with it being agonizingly slow as a bar fills at each step.
Midway filling a “charge” that will turn us a step to the left.
Pressing F1 will show either an arrow left, arrow right, or double-arrow (which I think indicates “you’re pointed the right way”). The problem is you need to navigate the monoliths without hitting things.
My spaceship being destroyed because it collided with one of the monoliths.
I found this section terribly confusing as it doesn’t appear like the things you hit are the monoliths? Or at least you can sometimes steer towards what appears to be an empty path, move forward, and crash.
Moving forward here crashes into apparently nothing.
The goal, according to the manual, is to find a series of six rectangles that you shoot with the Revival Ray (powered by the Bluestone) and you’ll be able to escape. Oddly enough, it appears to be impossible to crash moving backwards, so the way to position yourself is to slide far to the right (past whatever hitboxes the game thinks are there, visible and invisible) and slide forward the right amount, then slide back into place. At least I think this is the strategy, as I haven’t found a single one of the rectangles, and this is with occasionally hitting the “speedup” key to keep the sluggish movement from being so sluggish.
I’m far past adventure territory so I can consider this one done. The cinematic ambition is impressive and I found the imagination of both “act 2” sections I experienced to be exciting, just janky and undercooked for BASIC source code on an ancient system. The “ship docking” section with giant monoliths made me think the author was trying to make cinema more than a game. Not only thinking of 2001 here, but the long special effect sections of Star Trek: The Motion Picture.
On my timeline of early Japanese adventure games, this technically lands somewhere in November of 1982, as the earliest ad that Rob found was in December of 1982.
Given the by-hand local distribution early in Osaka, I’m inclined to think that month might bump back a little, after Mystery House II but before Diamond Adventure. However, other games (like Diamond Adventure) may have ended up in displays in local computer stores early as well, so for consistency I’ll place in November against the ones we’ve played:
Xtal will return with more adventures, so if nothing else, this gives a preview of what their kind of thinking might lead to. There’s even a sequel to Cosmo Cross by the name of Grand Cross, sorted as “ADV/RPG” although I’ll worry about what sort of genre it really falls into once I get past 1983.
Everybody knows that you KILL TROLL WITH SWORD until he vanishes in a greasy black fog. If he kills you first, big deal; RESTORE and try again. It's too random to be a real obstacle. But do you know the math behind the randomness? I didn't! ...
Everybody knows that you KILL TROLL WITH SWORD until he vanishes in a greasy black fog. If he kills you first, big deal; RESTORE and try again. It's too random to be a real obstacle. But do you know the math behind the randomness?
I didn't! But some folks got to talking about it on the Discord, and I realized there was room to add some visualization. So Visible Zork 1 now has a "Combat" tab. You can try it now, or just read it right here.
(The Visible version is dynamic. It shows how enemy strength decreases as you fight them. Also exciting details like the "enemy wakes up" timer.)
The villain table describes the three enemies you can fight. (Although the cyclops does not follow regular combat rules, so his entries are never used.)
The table shows what weapon the monster is weak again, the weakness penalty, the awakening probability (if it is unconscious), and the table of melee outcome messages. Also STRENGTH, which is really a property rather than a table entry, but I’m including it here anyway.
The combat table is used for all attacks, player and monster. Select a row based on the defender’s combat strength and the attacker’s advantage over the defender. That is, if the defender has strength 2 and the attacker has strength 3, use line “2/D+1”.
Then roll a nine-sided die. Outcomes (for the defender) are: miss, staggered, light wound, serious wound, unconscious, killed.
If you are staggered, you have a 25% chance of being disarmed. If you are knocked out, your opponent gets 1-3 free shots at you, and most of the results are “killed”. (The dungeon is unkind to the unconscious.)
A few observations and questions:
Why a nine-sided die? Who knows. Maybe they didn't trust the low bit of the primitive RNGs of the day. (Even the "modern" IF interpreters of the 1990s had that sort of problem.)
The troll, who starts with strength 2, can be killed in one blow. The thief can't; you have to wear him down a bit.
Note that the cyclops is fully set up for combat, even though you can't hurt him (strength 10000!) and he won't fight you. He can kill you; if you annoy him, it starts a timer that ends with your ignominious death. But that's not handled through the combat system -- no die rolls.
In early versions of MIT Zork, you could fight the cyclops, but that was disabled in favor of sneaky solutions. The real question is, why did they leave the cyclops combat responses in the game? That's about 500 bytes they could have saved. Usually Infocom treated every byte as precious -- particularly for these early titles which had to run on the Atari 400, etc.
Finally, a combat bug -- newly discovered on our Discord, as far as I know.
Let me summarize the HERO-BLOW routine, which handles your attacks:
Set ATT to FIGHT-STRENGTH (your adjusted combat strength);
Set DEF to VILLAIN-STRENGTH (the opponent's adjusted combat strength);
If the opponent is disarmed or unconscious, you kill them automatically;
Otherwise roll on the combat table;
Decrease DEF if you rolled a hit;
Call VILLAIN-RESULT, which stores DEF as the opponent's STRENGTH and kills them if that's zero.
What do we mean by "adjusted combat strength"? Well, the VILLAIN-STRENGTH routine checks whether PRSI (the parsed indirect object) matches the villain's weakness. This is a crude way of checking whether you typed KILL TROLL WITH SWORD or KILL THIEF WITH KNIFE, as distinct from any other weapon. If the weapon matches, VILLAIN-STRENGTH returns a value decreased by one (but not to zero).
(I think this decrease would also happen if you typed PUT LAMP IN SWORD on the same turn that the troll attacks you. Possible additional bug! But not the one I'm talking about.)
Notice that the weapon penalty makes its way from VILLAIN-STRENGTH to the DEF variable to the opponent's STRENGTH -- regardless of your roll! So if you attack the troll with the sword and miss, the troll's strength goes down by one anyway. (Unless it's already at one.) A light wound does two damage, and a serious wound does three.
The same goes for attacking the thief with the knife, of course. A miss will cause damage.
(To be clear, this only happens when you attack. The converse VILLAIN-BLOW routine does call VILLAIN-STRENGTH, but it doesn't call VILLAIN-RESULT. The decreased enemy strength value is discarded and doesn't affect future turns.)
Is this a bug? It sure doesn't look intentional. You wouldn't expect that a miss would cause damage. On the other hand, every commercial version of Zork behaved this way (as far as I know). If you "fixed the bug", combat would get significantly harder -- particularly the thief fight, which necessarily goes several rounds. Would anybody want that?
If the combat was playtested at all -- and Infocom was assiduous about user testing, both before and after release -- it was tested with these odds. The mechanics may be illogical, but we have to assume that the outcome is what Infocom wanted. Or at least, they were satisfied with it.
(Continued from my previous post.) I’ve made progress on but haven’t yet finished the ADV part of Cosmo Cross; while I suspect the section is short, I made it through enough content to report in. To continue from last time, I had found some difficulty beating the space combat portion that starts Cosmo Cross, so […]
I’ve made progress on but haven’t yet finished the ADV part of Cosmo Cross; while I suspect the section is short, I made it through enough content to report in.
To continue from last time, I had found some difficulty beating the space combat portion that starts Cosmo Cross, so used the raw power of editing the BASIC code to jump to the part most relevant to this blog, the adventure. Once reaching orbit you activate a signal device and get a text message about getting teleported to Ariosferia.
Soon you will see the surface of the planet, and arrive at the entrance to the base at its center.
The instructions also warn “you must never look behind you.” You’ll see what’s going on with that shortly.
The parser is the kind (like original Mystery House) that asks verb and noun to be typed on separate lines; confusingly, sometimes a modifier is also requested. Here, you need TO OPEN / DOOR / LEFT or OPEN / DOOR / RIGHT. This will cause an animation showing one side or the other opening, and then GO / FRONT (not FORWARD or the like) will advance inside.
The left and right side consist of a series of four doors, and a series of four … windows? decorations? On the shot above when facing one of the windows I haven’t been able to do anything. After TURN / LEFT:
The game gives a full list of verbs if you press the HELP button on the keyboard. Other than OPEN, GO, and TURN which we’ve already used, there’s USE, TAKE, SHOOT, and PUSH. Helpfully, if you type one of these verbs and it doesn’t apply, the game will just prompt you for a verb again; at the “window” or whatever that is, I tried all four, indicating either some other condition needs to hold or they really are just decoration.
Opposite the symbols are doors leading to single rooms. Some are empty, some have items. The big issue has been identifying what the items are. While this one is clearly a KEY…
…what about this item?
After some squinting and thinking about the word SHOOT on the verb list, I decided (correctly) it was a GUN.
It was a bit harder for me to realize with the screen above I was dealing with the STONE (that is, the Bluestone we’ve been trying to find).
Here is the complete map of the two sections (at least in my playthrough – I’m fairly sure everything seen can shift around):
The “monster” is the one oddity; a creature moves around when you walk in, and it took a lot of noun-hunting before I decided to SHOOT / MONSTER. There doesn’t seem to be any positive effect. I may be in a situation like the squid in The Palms where the encounter is “optional”.
One room has a rectangle where the only reason I could come up with MEMO was the suspicion the author had played Mystery House 2. Taking the memo reads it automatically.
The memo indicates the Bluestone and the teleport switch to return to the spaceship are both hidden, and that there are three switches, including a “self-destruct” switch.
Two more details: the end of each hall has a figure which may or may not be passable. Via testing verbs I found the game was wanting USE, yet none of my items — and I apparently had all of them available — did anything useful.
Finally, there’s the ominous “don’t turn around” message. If you turn to face “south” on my map you will outright die. This might have been a dodge to get out of drawing the opening room, but it’s a wonderfully atmospheric way to do it. I always felt a small bit of pressure while walking around even though this isn’t an intense/time based area like the first section of the game was.
Sent to another dimension!
My guess is at least one of the “windows” or whatever those are have some extra secrets, so I need to laboriously test each one; the game tries to animate movement as much as it can so every step is sluggish. I still expect an escape with the Bluestone next time, and I’ll at least try the later sections; no promises I’ll get that far, though.
Here's the back wall of my home office -- a.k.a. my videochat background. It used to be boring. Now it's colorful! Pattern: slowflies. The lights are bright enough to saturate my phone camera; that's why the blue looks weirdly dark. That's ...
Here's the back wall of my home office -- a.k.a. my videochat background. It used to be boring. Now it's colorful!
Pattern: slowflies. The lights are bright enough to saturate my phone camera; that's why the blue looks weirdly dark.
That's a programmable LED strip running a pattern that I designed. In a pattern language that I came up with. The source code for that pattern is here: slowflies.pbb.
As you can see, it's a declarative syntax which describes waves. Roughly, this code says "Generate some sine-wave pulses that move slowly back and forth; add them; draw them in green ($0F0) with a blue ($02C) fade-down."
Here's another one, in pinks and oranges:
Pattern: fireblobs. I turned off the room lights to bring out the colors.
It's nicely flexible. That green-fireflies video is a sum-of-waves like all the others, but with a gradient that only shows the midpoint of the summed curves. This gives a sort of cheapass edge-detection over time, which is visually interesting.
This project has taken several detours. I originally wanted to run an LED strip around the bay window of my second-floor apartment. Thus the "Beacon" -- it would shine out over my neighborhood. Or at least amuse the neighbors.
I may yet do that, but weather-proofing and outdoor wiring is a lot. I figured it would be easier to start with an indoor installation. The neighbors would miss out, but it would amuse my compatriots at morning stand-up.
The pattern language is a syntax that I came up with a couple of years ago. My first implementation was in Rust. (I wanted some Rust practice.) That was intended to run on a Raspberry Pi. And it did! I bought a Pi and an LED strip. I managed to get the software installed, and it ran great.
However, connecting the Pi to the LED strip was, well, a soldering project. I've soldered wires, but my skill level is "blob it on and hope it works" and I just didn't feel comfortable anywhere near circuitboard pins. So that got shelved for a while.
But a few months ago, someone mentioned the word "Pixelblaze". The Pixelblaze is a user-friendly microcontroller for LED strips. It has a built-in web interface. You can get it with the connector already soldered on! Plug in, fire up a web page on your local network, select a pattern, and you're off. There's a pattern editor, too. Exactly what I wanted.
A Pixelblaze controller plugged into its connectors. It's illuminated in green because where do you think the light is coming from?
Only one problem: it doesn't run my pattern language. It uses a Javascript-like language. Nothing wrong with that -- but I had this extremely cool (I thought) declarative syntax all worked out, and I wanted to use it.
Sadly, while the Pixelblaze hardware (and its software) are intended for tinkerers, they are not open-source. So I couldn't just replace their language with mine.
Instead, I had to write a translator tool. Behold: pbbeacon!
(Yes, the "Pixelblaze Beacon". I wasn't feeling groovy for names.)
pbbeacon is a translator which reads one of my pattern files (a .pbb file) and writes out a Pixelblaze language file. You can see examples of both in the scripts directory. The slowflies.pbb script up top gets translated into slowflies.pat. You shove that onto the Pixelblaze and it runs.
(The top of the .pat file is the original .pbb source, included as a comment. Provenance is all.)
More to be done
This project is, as they say, very much in progress.
The pbbeacon language is missing a few features compared to the Rust original. In particular, I need to implement the noise operator. The PB language has a noise() function; I just need to get it hooked up right.
My system has a global clock. It needs to fire waves at known intervals, so time-tracking is critical. But the underlying Pixelblaze language uses fixed-point 16.16 math for everything. (Really 15.16, because it's signed numbers.) That means that my clock will overflow after 32767 seconds -- nine hours. Probably the whole pattern will freeze up, or go blank, or something. So it's no good for all-day operation. I should write some code to time-shift down after eight hours.
You're supposed to be able to control the Pixelblaze by sending messages over a websocket connection. I have not yet gotten this to work. (I could have it flash red when someone messages me on Slack! Or when someone files a bug on one of my Github repos! Wait, no, that's a terrible idea.)
I did a fair amount of code optimization, but my patterns are inherently slow. Adding up several sine waves is just a lot of math. The Pixelblaze chugs a bit under the load. Some of my patterns run at 30 fps, which is slower than I prefer. If I try to get any more complex, it would get unacceptably blinky. Or if I got a longer strip, or a denser one (more dots-per-inch).
Pattern gallery
Here's all the patterns I've come up with so far. I'm sure I'll add some more as time goes on. Fiddling with pattern code is fun!
These are animations rendered by the Pixelblaze editor. (Or, really, 2D images scrolling through a narrow rectangle. Slit-scan trippiness!)
Techy details
I bought a Pixelblaze V3 Standard, the "pre-soldered" version, along with the slim case. Actually I bought two, one pre-soldered and one not.
What it looks like with the case open. This is the non-pre-soldered Pixelblaze.
Then (or rather, two years earlier) I got an Adafruit DotStar LED strip, 4 meters at 60 LEDs per meter. Also a chunky 5V power supply.
You can power the Pixelblaze through a USB-mini interface, but it can't draw much power that way. So there's a limit to how many LEDs you can run off USB. I followed the recommended setup, which is to power the LED strip directly from the power supply. Then the Pixelblaze doesn't need its own power connection; it just runs off the power coming from the LED strip. It's clever.
I ran into one hitch. If you look at the Pixelblaze store page, you'll see it comes with a tiny little ribbon cable that connects the controller to the LED strip. (Also visible in the green closeup above.) The DotStar strip I bought has a four-pin connector on each end (they can daisy-chain) so it all just worked.
...eeexcept it didn't work. Upon careful inspection, the PB ribbon cable wanted to connect to the wrong end of the DotStar strip. (They daisy-chain, but one end is "input" and the other is "output".)
But I was smart this time. I asked my partner, who has been soldering LEDs for decades. She threw together a 4-pin gender-changer from parts lying around, and then it all just worked.
Yes, I will get her to deal with the Raspberry Pi as well. My original plan still awaits. The Pi will run much faster -- which means fancier patterns on longer strips. The Beacon will rise! Forth EorlinGaAs!
IF Responses page: https://plover.net/~davidw/responses/index.html Hey, it’s been a while since I updated this project, and it’s not up to date by any means, but I have added several new entries to my XYZZY, PLUGH, PLOVER, etc. pages, and I have added Flexbox so the sorting options actually work now. Yay progress.
Hey, it’s been a while since I updated this project, and it’s not up to date by any means, but I have added several new entries to my XYZZY, PLUGH, PLOVER, etc. pages, and I have added Flexbox so the sorting options actually work now. Yay progress.
At the end of 2025, David Cornelson stepped down from the IFTF board of directors. We would like to thank David for his time and service to the organization during his two years on the board. David will continue to support IFTF, along with former members of the board, on the advisory board.
At the end of 2025, David Cornelson stepped down from the IFTF board of directors. We would like to thank David for his time and service to the organization during his two years on the board. David will continue to support IFTF, along with former members of the board, on the advisory board.
The IFTF Grant Admin Committee is pleased to announce that the Interactive Fiction Technology Foundation’s microgrant program is returning (after a successful pilot last year). Do you have a project in the works that would benefit an interactive fiction community and could use a bit of funds to get it over the finish line? We would love to hear from you: applications for this year’s program are now
The IFTF Grant Admin Committee is pleased to announce that the Interactive Fiction Technology Foundation’s microgrant program is returning (after a successful pilot last year). Do you have a project in the works that would benefit an interactive fiction community and could use a bit of funds to get it over the finish line? We would love to hear from you: applications for this year’s program are now open.
Improve accessibility features for Parchment on iOS (Dannii Willis)
An IF Workshop for writers in Indonesia (Felicity Banks)
Audiobook Documentation for Inform (Ryan Veeder)
Chronicling the history of annual IF awards (Brian Rushton)
As the list of last year’s awardees might suggest, the goal of the grant program is to support projects that benefit the interactive fiction community at large (rather than funding the commission of new games, for instance). We especially love projects that provide tangible benefits to a community of IF players or makers in their work to preserve, maintain, and inspire the continued growth of this medium. Proposals are evaluated by an independent committee of advisors (distinct from the grant admin committee) for merit, feasibility, and potential impact.
Our budget for the grants program remains small: we have $3,000 of funds in total to split between awardees, with a maximum award per application of $1,000. (Requesting a smaller amount is okay and helps us support more projects.) To preserve our volunteer bandwidth, we will not consider funding projects needing less than $150. We will ask you to submit a simple budget to back up the amount you are asking for, as well as a few details about your project and its scope, but we try to keep the application process as simple as possible.
Some fine print: Grant awardees will be asked to submit a report nine months after receiving funds, meaning our funding is best-suited for projects that will be accomplished in under one year. Please note that those directly involved in the grant process (i.e. Grant Admin Committee members, Grant Advisors, IFTF Board Members) cannot apply. Those who have been banned from IFTF activities are not welcome to apply. If you are connected to someone involved in the process, please disclose that in your application so we can make appropriate plans to avoid conflicts of interest.
If you’re interested in applying or learning more about the process, please check out our grant guidelines. Applications will be open until October 31, 2024, and we except to announce accepted projects by January 31, 2025.
If you have any questions, please reach out to [email protected]. We can’t wait to see the ideas the community comes up with!
Dannii Willis has been the main developer of the open source tool Parchment for a very long time (has it been 15 years already?). Parchment is a very cool interpreter for parser games, allowing anyone to play the games directly in the browser. Dannii applied in 2023 for an IFTF microgrant, asking the organization to cover the price of acquiring a used iOS device; this would allow him to test the Pa
Dannii Willis has been the main developer of the open source tool Parchment for a very long time (has it been 15 years already?). Parchment is a very cool interpreter for parser games, allowing anyone to play the games directly in the browser. Dannii applied in 2023 for an IFTF microgrant, asking the organization to cover the price of acquiring a used iOS device; this would allow him to test the Parchment interpreter on real hardware himself, which would lend itself to faster iterations. Dannii was also in particular very interested to test the compatibility of Parchment on iOS with UserVoice, and try to push the envelope around accessibility features for blind or low-vision players.
We just received his report, which has great detail on the project and the work he accomplished using the iOS device he was able to acquire with our support — work for Parchment, but also on other cool projects! Hope you enjoy reading this!
Thanks to the IFTF grant I was able to purchase a refurbished iPhone 13, which has allowed me to test and resolve some significant issues with Parchment.
First, some virtual keyboard improvements: mobile phones and tablets are commonly used via virtual keyboards. While on most websites these work smoothly, they pose a problem for an app like Parchment which wants to adjust itself to fit perfectly in the remaining visible screen space, so that the status window etc will still be visible. Unfortunately browsers don’t act the same way with their virtual keyboards, so keeping a consistent user interface for both iOS and Android is difficult. In late 2022 Chrome introduced a meta tag for specifying which behaviour an app wants. Firefox added support for it in 2024, but Safari still doesn’t support it. In addition, while Safari does support the VirtualViewport API, which allows you to be notified when the virtual keyboard is opened or closed, its resize events are quite delayed, up to 700ms, which feels very sluggish. With my iOS testing device I was able to find solutions for these problems, so that Parchment now has a very smooth and responsive interface on all browsers.
The next two projects haven’t been added to the stable version of Parchment yet, but have been shared for testing. As part of a major comprehensive update to Parchment, I have developed a new file system and dialog. Similarly to the general virtual keyboard updates, it needed a little bit of special care to get working in iOS. Second, I have finally added sound support to Parchment! The Glk API that Parchment is built upon supports three sound formats, AIFF, Ogg/Vorbis, and MOD. Unfortunately Chrome doesn’t support AIFF, and Safari doesn’t support Ogg/Vorbis! (None of them support MOD, though MOD files are also rarely used, so for now I’m not intending to support them in Parchment.) I have added a small audio decoding library into Parchment so that AIFF and Ogg/Vorbis can be supported in all browsers.
And I have also used the iOS device for a bonus project: Infocom Frotz! This isn’t part of Parchment, but seeing as I used my iOS test device to work on it, I’ll mention it too: this year I ported Frotz to the web, finally allowing Infocom’s multimedia (sound/graphics) games to be played online. Infocom’s version 6 of the Z-Machine was a big departure from its earlier versions, and so even today it is only supported by some Z-Machine interpreters. Its window model is not compatible with the Glk model that most interpreters now use, and so playing Infocom’s Z6 games has required a stand-alone Z-Machine interpreter rather than the multi-interpreters the community usually recommends (Gargoyle, Lectrote, Spatterlight, or Parchment). But just because the Z6 model doesn’t fit our modern Glk model doesn’t mean that interpreters like Frotz aren’t high quality. Frotz already has an SDL version, and Emscripten, which I’ve been using for years to port the Glk interpreters for Parchment, also supports SDL. So it didn’t take a lot of effort to build Frotz with Emscripten, thereby allowing the Z6 model to finally be supported on the web. It still needed some extra polishing, most notably that Emscripten’s version of SDL doesn’t support mobile virtual keyboards. But I have a lot of experience with that! And of course, there were more viewport issues in iOS.
The test iOS test device helped me accomplish a lot this year that I couldn’t have effectively tested otherwise. Even though the year is over I of course won’t be getting rid of the phone. So you can expect at least one more end of year report from me. Will Safari finally add support for the interactive-widget viewport meta tag? I can only hope so. See you then!
We wrap up this series of grant reports with this fourth and final blog post, on Felicity Banks’ project and how support from IFTF made her able to travel to Indonesia and spread the word about IF!
Felicity is a long-time IF author who lives in Australia but has ties to Indonesia, having travelled there over half a dozen times and learned the main language, Bahasa Indonesia. She applied for a micr
We wrap up this series of grant reports with this fourth and final blog post, on Felicity Banks’ project and how support from IFTF made her able to travel to Indonesia and spread the word about IF!
Felicity is a long-time IF author who lives in Australia but has ties to Indonesia, having travelled there over half a dozen times and learned the main language, Bahasa Indonesia. She applied for a microgrant to travel there for the Ubud Writers’ and Readers’ Festival, the largest writing festival in South-East Asia), hoping to offer an IF workshop as part of the official program track. However, after the festival declined the proposal, Felicity instead shifted the project’s focus to connecting with authors in Ubud around the time of the festival and giving a series of workshops. (Oh, and go to cat cafés and monkey forests.)
This proved to be very successful, with Felicity teaching 7 small workshops (focusing on the use of tools such as Twine) involving 18 Indonesian-speaking authors! The workshops went very well, as told by Felicity:
“It is wonderful to see people’s faces light up as they see their words transformed into a game at the touch of a few buttons. They are extremely impressed that volunteers on the other side of the world care so much about inviting Indonesian people into the community.”
Following these workshops, Felicity sought to keep the momentum going - as part of her application, she proposed to stay in touch with participants for two years after the workshops, to follow their progress. A WhatsApp group was created with over a dozen of Indonesian authors joining, and everyone keeps in touch and remains engaged with IF. Felicity also ran, in late 2024/early 2025, a small friendly comp for her students, with small cash prizes for the three best interactive stories.
We love this project - despite the fact that Indonesian is spoken by 200-250 million people, we are not aware of a Indonesian-speaking IF scene, and we would love for one to spring to life! Felicity’s familiarities and ties with Indonesia have allowed her to become an ambassador for IF there, and plant the seed among the community of authors; we are very happy the microgrants program was able to help make it happen!
“This was an incredible journey and I met lots of wonderful writers. Thank
you so much.”
-Felicity Banks
We are pleased to announce the recipients of the second round of IFTF microgrants, after a successful pilot in 2024.
The grants program exists to disburse small-value grants to peer-reviewed projects that benefit a community of interactive fiction makers, players, researchers, or educators. An independent committee of Grant Advisors review each submission and provide recommendations for funding to
We are pleased to announce the recipients of the second round of IFTF microgrants, after a successful pilot in 2024.
The grants program exists to disburse small-value grants to peer-reviewed projects that benefit a community of interactive fiction makers, players, researchers, or educators. An independent committee of Grant Advisors review each submission and provide recommendations for funding to the Grants Committee, who this year have selected four projects to fund.
We saw great diversity again this year in the projects submitted, including a higher number of submissions compared to our pilot year. Thanks to everyone who submitted proposals! Here are the list of grant recipients for 2025.
Critical Essays On Interactive Fiction - Grace Benfell
Grace is a co-editor of The Imaginary Engine Review, an online games criticism journal. Grace will receive $500 to commission three articles for the journal on significant interactive fictions written in the 2010s, exploring how these works continue the medium’s tradition of experimentation and introducing modern IF to a broader gaming audience.
No-code IF platform for web using Ink - Mark Davis
Mark Davis is developing a web-based tool for interactive fiction builders that allows creators without coding experience to create interactive stories incorporating images and animations, using Ink scripts under the hood. Mark will receive $600 for hosting and branding assets for the in-development platform, crucial steps towards opening it up to outside testers on its road to launch.
Interactive Fiction Workshop for London Games Week - Katy Naylor
Katy will receive $716 to host a series of IF writing workshops and Twine mini-jams at the 2025 London Games Festival Fringe, and present resultant works online in a special edition of voidspace zine. The workshops are aimed at people interested in games or interactive writing but who have not coded or designed a piece of IF before, hoping to bring new voices into the community.
Atrament, an Ink-based IF engine - Serhii
Serhii is working on an IF engine that combines Ink scripting with Javascript as an alternative to Inky, creating a more full-featured release platform for Ink stories comparable to the mature web deployments for languages like Twine and ChoiceScript. The core of the engine is already complete: Serhii will receive $1000 to fund dev time writing documentation, testing and debugging the engine, and adding improvements focused on easier development and deployment workflows for authors.
We’re thrilled to see so much passion for expanding the audience of IF writers and readers in this year’s awardees. We want to thank all applicants, as well as our Grant Advisors, who volunteered their time to review the projects and formulate a recommendation for IFTF: thank you very much to Grim Baccaris, Kate Compton, Emilia Lazer-Walker, Juhana Leinonen, Colin Post, and Kaitlin Tremblay.
Congrats again to this year’s grant recipients! Check back in the fall for information about next year’s grant cycle. An announcement of the 2024 grant recipients is also available.
And lastly: if you like the grants program and want to see it continue, please consider donating to IFTF! Our Paypal page allows you to specify the program you’d like to see your money fund - you can select the grants program in the dropdown menu if you are so inclined. Thank you to everyone who has been donating to IFTF and allowing us to continue furthering our mission!
On February 22, 2025, IFTF elected two new officers to the roles of Treasurer and Technical Officer. The former position is being filled by Colette Zinna, while the latter, a new role, is being filled by Doug Valenta. Previously, these tasks were handled jointly by Andrew Plotkin, whose term on the board finished in March 2024 and whose time as Treasurer has now also ended. The board thanks Andrew
On February 22, 2025, IFTF elected two new officers to the roles of Treasurer and Technical Officer. The former position is being filled by Colette Zinna, while the latter, a new role, is being filled by Doug Valenta. Previously, these tasks were handled jointly by Andrew Plotkin, whose term on the board finished in March 2024 and whose time as Treasurer has now also ended. The board thanks Andrew for his many years of service to the organization’s administration; he will be continuing as the chair of the IFArchive committee and helping with the NarraScope conference.
Colette Zinna is a longtime fan of narrative games and an occasional game developer. She’s attended or volunteered at NarraScope every year since it began.
Doug Valenta is a programmer and creator focusing on games, narrative, language, and the web, and a two-time NarraScope speaker. Doug works as a software engineering manager, leading a platform engineering team at a data management startup. He lives in Portland, Oregon with his partner and two dogs.
As we celebrate our two new officers, we look forward to the organization’s continued growth as we continue to expand our purview, operational activities, and service to the world of interactive fiction and narrative games. You can read more about IFTF’s leadership, and join us on the Intfiction.org Forums to toast the new officers.
We are pleased to announce the creation of our new Institutional Relations committee! You can learn more by reading our charter here.
The intent behind this committee is to help support IFTF in establishing and nurturing relationships with institutions that align with our vision. Over the years, we have realized there are so many of them! Other non-profits (related to digital arts, video games, op
We are pleased to announce the creation of our new Institutional Relations committee! You can learn more by reading our charter here.
The intent behind this committee is to help support IFTF in establishing and nurturing relationships with institutions that align with our vision. Over the years, we have realized there are so many of them! Other non-profits (related to digital arts, video games, open source, etc.), educational institutions, libraries, museums and other preservation-oriented folks, video game studios, but also government bodies and granting bodies, and everything in between!
While IFTF has established a number of great institutional relationships over the years, there wasn’t necessarily formal internal resources or structures that could help in supporting these relationships; with so many committees with different goals and activities, there was a risk of a lack of coordination or visibility, and missing identifying interesting opportunities or potential synergies. This committee’s goal is to help with this, and also support the org more generally in things like communicating IFTF’s impact to various interested stakeholders more effectively, or having a more structured and more long-term-focused approach towards fundraising. We believe this is an important step in IFTF’s maturation, and we are very excited about it!
Our committee has a few members to get started with, however we’re definitely interested in onboarding more folks! If you like building bridges, or know a few people in fields related to what we do, like to find missing puzzle pieces, enjoy the thrill of finding new partners, have some fundraising experience — or if just like interactive fiction and would love to help us and maybe gain some skills, please get in touch via email and we’d be thrilled to chat!
IFTF’s 2024 Transparency report is online, summarizing the organization’s activity over the previous calendar year, including its financial income and outflow.
IFTF’s 2024 Transparency report is online, summarizing the organization’s activity over the previous calendar year, including its financial income and outflow.
Hello to everybody in the IFTF Community (and beyond!)
The Interactive Fiction Technology Foundation’s board of directors is thrilled to announce the creation of a new way that you can help support our mission and get some fun perks in the process. This initiative has been in process for many months and we are delighted to finally launch it for the public.
You may now support IFTF on the Patreon
Hello to everybody in the IFTF Community (and beyond!)
The Interactive Fiction Technology Foundation’s board of directors is thrilled to announce the creation of a new way that you can help support our mission and get some fun perks in the process. This initiative has been in process for many months and we are delighted to finally launch it for the public.
You may now support IFTF on the Patreon platform, at the following URL:
Backing IFTF on Patreon provides an additional, accessible route to helping us continue to serve the community of narrative game lovers and its ever-evolving needs. By becoming a member of our Patreon, you can unlock various perks, such as:
• A special role and access to an exclusive channel in the IFTF Discord ($5/month tier)
• A unique profile badge on the Intfiction forums ($5/month tier)
• A scaling discount on NarraScope admission ($10/month tier or higher, after 6 continuous months)
• Access to the Secretest Discord channel ($100/month tier, for you wild and wacky folks!)
We plan to continue to expand the perks over time as each of IFTF’s committees hooks into the system. We also are open to suggestions about additional things we can offer, so if you have ideas, please feel free to contact IFTF.
IFTF Patreon Q & A
Q: I already financially support IFTF another way. Is that changing or being eliminated?
A: No! This is simply another option for helping out.
Q: If I support IFTF via PayPal, it’s considered a tax-exempt donation. Is that still true with Patreon?
A: We advise checking with a tax advisor with expertise in your specific jurisdiction, but Patreon states that “if the creator is a legally recognized not-for-profit company and you receive nothing of value in return for your payment to them, then some jurisdictions allow the patron to take a tax deduction.”
IFTF is thrilled to announce the next round of our microgrant program, providing modest grants to folks working on interactive fiction technology, education, preservation, or outreach. Do you have a project in the works that will benefit an interactive fiction community and could use a bit of funds to get it to the finish line? We would love to hear from you: applications for this year’s program ar
IFTF is thrilled to announce the next round of our microgrant program, providing modest grants to folks working on interactive fiction technology, education, preservation, or outreach. Do you have a project in the works that will benefit an interactive fiction community and could use a bit of funds to get it to the finish line? We would love to hear from you: applications for this year’s program are now open.
The goal of the grant program is to support projects that benefit the interactive fiction community at large (rather than funding the commission of new games, for instance). We especially love projects that provide tangible benefits to a community of IF players or makers in their work to preserve, maintain, and inspire the continued growth of this medium. Proposals are evaluated by an independent committee of advisors (distinct from the grant admin committee) for merit, feasibility, and potential impact.
Our budget for the grants program is small: we have $3,000 of funds in total to split between awardees, with a maximum award per application of $1,000. (Requesting a smaller amount is okay and helps us support more projects.) To preserve our volunteer bandwidth, we will not consider funding projects needing less than $150. We will ask you to submit a simple budget to back up the amount you are asking for, as well as a few details about your project and its scope, but we try to keep the application process as simple as possible.
Some fine print: Grant awardees will be asked to submit a report nine months after receiving funds, meaning our funding is best-suited for projects that will be accomplished in under one year. Please note that those directly involved in the grant process (i.e. Grant Admin Committee members, Grant Advisors, IFTF Board Members) cannot apply. Those who have been banned from IFTF activities are not welcome to apply. If you are connected to someone involved in the process, please disclose that in your application so we can make appropriate plans to avoid conflicts of interest.
If you’re interested in applying or learning more about the process, please check out our grant guidelines. Applications will be open until November 15, 2025, and we except to announce accepted projects by January 31, 2026.
Last year, we funded an array of exciting projects focused on accessibility, education, documentation and outreach. And in our most recent funding round, we helped support four exciting projects currently in progress or concluding:
Serhii is working on Atrament, an IF engine that combines Ink scripting with Javascript as an alternative to Inky, creating a more full-featured release platform for Ink stories comparable to the mature web deployments for languages like Twine and ChoiceScript. Work is in progress with a launch is expected by the end of the year.
Grace Benfell commissioned articles on modern interactive fiction for a special issue of The Imaginary Engine Review, an online games criticism journal, with the goal of introducing modern IF to a broader audience. The special issue is expected to be published shortly.
Mark Davis is developing Moving Literature, a web-based platform for interactive fiction builders that allows creators without coding experience to make interactive stories incorporating images and animations. A blog post introducing the platform recently went live.
Katy Naylor hosted a series of IF writing workshops earlier this year in London and online, in association with the zine Voidspace, introducing artists from the wider literary and interactive performance worlds to interactive fiction.
We can’t wait to see what ideas you’ve got brewing this year. If you have any questions about the IFTF Microgrants or the application process, please reach out to [email protected]. And if you don’t intend to apply but are still thrilled that IFTF is funding cool projects, you can donate to the grants program directly (choose “IFTF Grants” in the donation page dropdown), or simply to the IFTF General Fund to help us keep this and many other great programs running!
The company for today’s game, confusingly, goes by X’TAL SOFT, XTAL SOFT, or CRYSTAL SOFT depending on what document you are looking at. At least the title of the game is straightforward: The founding president, Yoshiyuki Morita, was a music fan in high school (along with Takeshi Kono, who he discussed rock and guitars with) […]
The company for today’s game, confusingly, goes by X’TAL SOFT, XTAL SOFT, or CRYSTAL SOFT depending on what document you are looking at. At least the title of the game is straightforward:
Except for the “Part-I”, thing, but that’s not part of the title; the game was sold as one whole but the three different parts are accessible with different passwords. Part-I is reached with XTAL.
The founding president, Yoshiyuki Morita, was a music fan in high school (along with Takeshi Kono, who he discussed rock and guitars with) and after graduating from university he founded the music studio “SKY SOUND” in Osaka. I found a 1982 recording from the studio, if you want to hear what sort of work they did:
In 1980, he saw a PC-8001 in Nipponbashi (aka “Den Den Town”, the second big electronics haven in Japan after Akihabara), and bought a MZ-80B for his studio “under the guise” of customer management.
Den Den Town in the 1980s. Via @carllin117464 on Twitter.
He found the management software terrible and learned programming by modifying it to be usable. This experience gave him enough of a taste of software development he wanted to work on his own. Because of the tape-based nature of computers at this time, it was not that unusual to switch from music to games; he founded Xtal Soft in April 1982 and the company’s first product (Cosmo Cross) was written by his old acquaintance Takeshi Kono, who left his job to join. Initial copies were made manually for the local Osaka area, one by one.
Cosmo Cross eventually sold a solid 10,000 tapes and was enough to kickstart the company to life, although where they really established their credibility was the RPG Mugen no Shinzou (translated either as “Heart of Fantasy” or “Heart of Illusion”). Quoting the composer Chihiro Fujioka (who had joined the company in 1983), the game was “a bit hard to explain” and they were “anxious about whether it would actually sell” but “the game decided the fate of Crystal Soft.”
While they have multiple early adventures, they became mostly known for their RPGs; both Lizard and Crimson are available to play on Switch (Japanese language only, they never sold in English). Noteworthy is that the music for Crimson includes Sky Sound in the credits so they were still operating the same time as the software company.
For the purposes of today’s game specifically, I want to jump ahead a bit to 1990: Xtal Soft does a merger with T&E Soft, the latter most famous for the seminal RPG Hydlide. Takeshi Kono is still around as a game director. Mitsuto Nagashima is hired right before the merger as a programmer; his first project is the Japan-only (and technically impressive) vertical shooter Chikyuu Kaihou Gun ZAS…
…which he follows up with a game for Virtual Boy, one of the most famous for the system: Red Alarm. While Mitsuto Nagashima wore quite a few hats, according to an interview…
I was in charge of the game’s content, balance, enemy positions, and even parts of the story.
…the director of the game was Takeshi Kono, the author of Cosmo Cross.
ASIDE: Of the two top videos on Youtube, one calls it one of the very best Virtual Boy games and one calls it the worst. The reactions seem dependent on how people are able to handle the wireframe graphics, and this may be a case where the 3D looks different to different brains. Gunpei Yokoi, designer of the Virtual Boy, is quoted as saying, “when playing, you completely forget it’s all just lines” but that clearly wasn’t true for everyone. Digging into the Youtube comments: “in the actual game, it [the wireframe design] can actually make it difficult to focus your eyes because there is no surface to focus to.”
Cosmo Cross is part space shooter, part adventure game. It was originally for PC-88 (the version I’m playing) and later got a Sharp X1 port. It isn’t quite like Probe One: The Transmitter with both running simultaneously forcing the player to leap between joystick and keyboard rapidly; a better comparison is The Desecration, which switches between “arcade segment” and “adventure segment”. The Desecration’s arrangement is:
action (in space) – adventure – action (in space) – action – action (in space) – action
(I’m basing this off both the manual which describes Act 2 of Part I as “kind of an adventure”, but also the guide from a 1984 issue of Oh! MZ. “Action” is more like “simulation” but I’m being handwavy here.)
There’s hence only a little adventure going on, but it’s unusual and early enough in Japanese adventure history to be worth a play even if I skip by the other parts. The problem is getting to it! I spent a long time deciphering what was going on with Part I Act 1.
The game came with “instruction cards” showing each of the scenes. This is a scene from the “adventure” part of the game.
Plot: in the year 259 on the Octam calendar, humanity was expanding their space colonies, and started to have constant battles with the Zagros. While most humans had moved from Earth, they still regarded it with fondness, and so the Zagros came up with an evil plan: tamper with a device installed by ancient aliens — intended to keep planets stable — to instead fling a planet into Earth and destroy it.
Humanity pooled their resources to build a single spaceship, the Saint Cosmo, piloted by… you! Your mission is to
a.) fly to the “clear blue” planet of Ariosferia (アリオスフェリア) to retrieve a Bluestone (ブルーストーンを); note that “the Zagros have anticipated this and have set many traps on Ariosferia.”
b.) use that Bluestone to power a “Revival Ray” and fix the sabotaged planetary-stability unit.
There’s a lot of keys going on; there’s a summary here and the more full manual text here. The big issue is that there are three kinds of steering:
◆ The number pad is used to generally change which direction your ship is pointing at.
◆ While floating in space with no enemies, you can press up plus a number (1 through 4) to activate Warp at different speeds. You can backwards-Warp by pressing down and a number.
◆ You can press F1 to activate a laser (F2 to turn it off); then holding down arrow keys will move a “crosshair” around. You cannot do any other kind of movement with the laser on.
I often was befuddled trying to rapidly switch from one to another, and since any kind of stalling can result in being attacked by ships, the result of pressing F2 a little too slow for the umpteenth time can be deadly.
Facing a Zagros ship, with the laser active.
There’s also a “barrier” that the player can activate with F3 (and turn off with F4) which will absorb some enemy shots; there’s a lot of details and rules about what you can do with particular amounts of enemy damage (like reduced warp) but the important points are that killing an enemy gains you 30% energy, and in general if you start to get serious damage (past about 50%) it is almost inevitable that you are going to die.
Suffering major damage. Notice that the laser crosshairs no longer show on the right and left side; this is one of the results of the damage.
The numbers in the bottom left corner end up being important.
VU and HL refer to how far off you are from an enemy vertically and horizontally. If you get these numbers down to 0 you are dead center and your shot will automatically kill. (You can still cause damage and eventually kill if you aren’t direct on center.) These become super important later (in a section I haven’t reached yet, and will probably decline to play) when there are invisible enemy ships to contend with.
The PARSEC display indicates shows how close you are to the destination planets. There’s a whole set of planets off in the distance you can try to get closer and closer to, and you point to the right one with your number pad movement; if you aren’t pointing at any planet, the display saying 0 PARSEC will be black space. You need to be pointing directly at a planet to see it at 0, and the goal of each of the space sections is to fly to the correct planet.
Ariosferia (the initial goal) is the clear blue one as the instructions say; later sections apparently can have the colors change when up closer.
Closer to the planets, close enough that if you try warp speed 4 you’ll overshoot and the game will automatically switch to rear camera and you’ll need to use warp backwards. The blue one is in the lower right. It’s not true 3D space and you’re essentially on a “track” like the one in Red Alarm or Star Fox, just the way you point your ship matters when you get up to the <2000 parsec range.
I found this section extremely frustrating to play. You start almost like a game of Lunar Lander where you’re just watching a number (the PARSEC count) in the corner, first holding up and Warp speed 4 and watching the counter tick down, then switching at the right moment to warp 3, 2, and 1 as you get closer and closer. Somewhere along the line you need to stop and steer, and that’s when an enemy will almost definitely appear (they can catch you at low warp, but it’s less likely).
The big problem is that often ships will appear in a position like this…
…and the laser is very slow at moving. (You can’t do number-pad steering in combat.) You can take many hits just from moving to shooting position. Here’s a battle (with the barrier shields off) that went relatively lucky; often the ships aren’t as well behaved and you need to adjust multiple times:
I constantly found myself in a situation where I would sustain rapid-fire from an enemy ship and even with my attempt at moving the laser over as “fast” as possible eventually I just would die.
I finally threw in the towel, as this is All the Adventures, not All the Space Simulators. I have here a video of the game played on Sharp X1 cued to start right at “0 PARSECS” with the planet in view. Once pointed the right direction, your ship will enter orbit and you press F5 to activate the next section of the game.
The video above keeps going into the adventure part but does not finish it. Things get a bit complicated so I’m going to wait on delving into there next time. (The game is in BASIC, and I have a setup from gschmidl that will skip straight to the adventure.) I will try a few more jabs at the space combat, but unless I’m missing something I’ll say finding the Bluestone will stay as my ultimate goal, because I really don’t want to deal with shooting down invisible enemies in space.