TIS-100 Sequence Indexer

Sequence Indexer program
Sequence Indexer program

It’s been long enough that I should go over what TIS-100 _IS_. TIS-100 is a programming puzzle game by the makers of SpaceChem (a previous obsession). Where SpaceChem kind of hid the programming knowledge necessary to solve the puzzles beneath a fun graphical abstraction, TIS-100 just strips away the candy coating. TIS-100 simulates a fictional multicore reduced instruction set computer (RISC). There is no RAM. Sometimes there is a stack or two. Each processor has just one directly-accessible register.

This is SUCH a niche game. Take your set of gamers. From that, select the ones that are programmers or who are interested in programming. From that, select the ones that have experience with assembly language, or are interested in programming at the chip level. From that, select the ones that love optimizing machine code. For a computer that doesn’t exist.

There is a very thin plot to TIS-100, exposed a fragment at a time in notes left by your crazy uncle, the uncle who left you this mystery computer after his tragic death. I’m just two segments from the end….

Segment 62711 – Sequence Indexer

  1. Sequences are zero terminated
  2. Read a sequence from IN.0
  3. Read index values from IN.X
  4. Look up index values in sequence
  5. Write indexed value to OUT

The processor diagram for this puzzle has two stack nodes with a processor node between them that provide a clue to the solution. The data will be read into the top stack, then we will build a node that moves data from one stack to the other until the correct value is on top of the bottom stack. Then the output node will read this value and… output it.

The first time I tried this puzzle, several months ago, I got stuck trying to limit the amount of data being moved from one stack to the other and I just got overwhelmed. This time, I got a basic solution running and then added the smarter stack management (that’s the node on the middle left).

I got as far as I could, fighting sleep. The automated analysis showed my solution was faster than most, but not fastest by a long shot. I found a much faster solution on the Internet. This better solution was roughly similar, but it included a fast path for when the index was the same as the previous index. It also moved the calculation of the necessary stack motion to the index input node. Mine is way over to the other side, and precious cycles are wasted getting it there. This other solution is the first place I have seen the Jump Relative Offset (JRO) instruction used.

Well, I bow to the better programmer, but I am happy with my solution :)

Next: A Sequence Sorter!

The Guild of Dungeoneering

Just sit right down and you'll hear a tale...
Just sit right down and you’ll hear a tale…

I’m usually a little wary of games that advertise the soundtrack as something you can buy separately. It’s just usually not going to be that memorable… but the songs that sing the tale of your triumphs or, more likely, your defeats, are so hilarious that it might just be worth it to be able to play one of them in a real life D&D adventure….

Like “Cardhunter” before it, Guild of Dungeoneering brings a paper-and-pencil roleplaying aesthetic to an overstuffed world of RPGs. But instead of controlling heroes exploring a dungeon, here you build a dungeon through which heroes (and I use the term loosely) search for loot, fame, and early graves.

Your Guild Hall
Your Guild Hall

You are the unseen architect of the Guild of Dungeoneering, a small affair out in the back country that hires itinerant heroes of various sorts to go sweep the floors, prune the garden, and defeat vile evil. As you expand the guild, you can attract various new kinds of adventurers. You’ll probably quickly want to find someone more experienced than the adventurer who just happened to be snoozing beneath a nearby bush when you built the first dungeon room. That’s just a “Chump”, a melee-based character with abilities balanced between defense (“cowering”) and offense (“slapping blindly with closed eyes”).

You’ll soon have “Bruisers” (defense-focused football hooligans), “Apprentices” (magical offense), “Cat burglars” (melee offense and cat-related puns), and “Mimes” (card and deck manipulation abilities) clamoring their way into the guild. Don’t get too attached to them, however. Because dungeons are harsh places.

A dungeon in play
A dungeon in play

Each time an adventurer enters a dungeon, they start from scratch — level 1, no gear. Before them are sketched a couple of dungeon rooms in a largely empty map. There usually is a boss to be defeated, or some number of mobs to kill. Your job, as the unseen architect, is to draw a hand of cards from the “Hope” (treasure), “Seek” (dungeon rooms), and “Dread” (monster) decks, and play those to build out the dungeon in such a way that the adventurer will reach max level and become fully geared before they attack the boss (or meet some other objective).

Gear is good. Gear adds cards to the “play” deck that complement your adventurer’s innate abilities, or shore up class weaknesses. Usually a dungeon will be more geared to a certain kind of play — magical defense, for instance. And you forgot to bring your Apprentice. The correct gear can let your adventurer live to see another day (unless it’s a Mime. Mimes don’t get to see another day).

Having played Seek, Dread, and Hope cards, it’s up to the adventurer to decide for themselves what their best path through the dungeon might be. Some go seeking high level monsters to kill. Some will cross the entire dungeon to get a piece of loot. Some will refuse to EVER confront the boss!

They aren’t stupid, you know. Not all the time, anyway.

Battle!
Battle!

When your adventurer finally does decide that maybe they will attempt to hit something today, out come the battle decks. These decks are, as I mentioned, comprised of cards given to your class and cards from gear. Here, our cat burglar has added some magical damage and defense to her normal melee offense. She is facing an Orc Warlord, who is a melee offense class with a side focus in getting the player to discard cards from her hand. That can leave the adventurer with very few options — more cards is more choice is more power when the battle decks come out.

The monster goes first (unless they play a card with the “quick” ability), and they typically have more health and better cards. (There are “blessings” you can research that allow the adventurer an advantage in the first couple of dungeon fights. Don’t waste the blessings. It is possible to die on the very first level 1 monster fight if you aren’t paying attention).

However, if you’ve gotten your adventurer to max level fast enough, and gotten the max level gear, and chosen gear that complements your character’s abilities and guards against the dungeon mobs’ focus, you just might have a chance. Win, and your adventurer may earn a battle scar that gives them an additional trait for future fights. Lose, and, well, it’s to the grave for the adventurer, and another “help wanted” sign gets posted down at the tavern. Maybe this death will help the next adventurer.

Guild Expansion screen
Guild Expansion screen

Guild of Dungeoneering is a surprisingly addictive game. The dungeon runs take about fifteen minutes to play through, as most of them have rules that limit the amount of time you can spend before the boss just decides he has waited long enough. The game is hilariously written, the songs maddeningly catchy, and the hapless adventurers eminently replaceable.

Each dungeon initially seems insurmountable. But after a couple of dead adventurers, it’s clear what sort of abilities would work best and which class would survive the longest. The Bruiser is a bit of a cheat, with their special ability to do damage while completely shutting down the opponent, but every class has their advantages, and the Bruiser has their fair share of deaths. Sometimes the cards just don’t work the way you want them to work.

I bought this game during Steam’s winter sale….

Armikrog!

There's a lot of secrets packed into this room
There’s a lot of secrets packed into this room

I kickstarted Armikrog a few years back. It’s a point and click adventure in the style of Maniac Mansion, Day of the Tentacle and so forth; you solve puzzles by picking stuff up, finding someplace to put it, pressing buttons and so on.

You’re not supposed to finish one of these games in a sitting; you’re supposed to be stumped by things, then hours or days later, have an “a HA!” moment as another puzzle falls to your subconscious. I’m hoping my subconscious comes up with something soon. There’s a particular choose three of fifteen picture puzzle which is causing me grief. The game has told me what one of the pieces is and, I think, where it goes.

I’ve found a baby that coughs up a green rod when you lull it to sleep. Weird.

Armikrog is the story of Tommynaut and his blind dog Beak-beak. They’ve crash-landed on a strange planet and have been chased into this mysterious building by a monster. I think the opening song (yes, there is an opening song) explains that he’s the last of three “nauts” who have been sent to explore the planet Armikrog. With Beakbeak’s help, maybe Tommynaut can find out what happened to his friends and escape Armikrog.

The game is animated entirely with stop-motion claymation. Every frame was created by hand. The whole game looks beautiful.

Unfortunately, Armikrog is a very minimalist experience. There’s just you and your mouse, clicking on things until something happens. I haven’t encountered any of the game breaking bugs that have been widely reported. I do expect they’ll be patched quite soon. I don’t intend to finish this game in an hour.

Shatter.

Ambush! From those bushes!
Ambush! From those bushes!

When last the Adventure Company met, we’d tracked some suspicious Cult of the Dragon cultists to a warehouse in which, returning later, we found absolutely nothing suspicious. While in the warehouse, though, we did manage to sign ourselves up as guards to accompany possibly suspicious cargoes right out of Waterdeep to their final destination.

Nothing was going to stop us from finding out what those cultists were up to… and leaving Faerun struggling to survive with a lot fewer cultists, if we had any say in it. Psycho-Elf Zalandrin just doesn’t feel the day was worth living if nothing died during it.

Nothing was going to stop us, that is, but three weeks where someone was doing something else, or was tired, or… forgot… But we did have a quorum last night.

Zalandrin, elf ranger. Ellryn, gnome monk. Naivara, elf cleric (of “the Mushroom God”). And me, Tinda, gnome bard.

Having spent two months in real AND game time travelling in a caravan from Baldur’s Gate to Waterdeep, we weren’t really looking forward to another wagon ride north. Thankfully, the wagon drovers made us walk, instead. Probably shouldn’t have said anything. My Fythe-Bytte was totes racking up the steps, though.

The Mere of the Dead Men is not my favorite vacation resort destination. The road wound through an endless swamp, and the clinging ground fog made it difficult to spot danger from any distance. A runner had been sent out, and returned with word that our destination, a warehouse with an inn attached, lay not far ahead. And this time, there didn’t seem to be any annoying assassins or mushroom forests in the vicinity.

I walked blithely on (steppeth thee 1,042,915th! steppeth thee 1,042,916th!) as the rest of the party was alerted by subtle sounds and movement that an ambush awaited us ahead. Alerted by sounds, movement, and the DM putting our character icons on a battle map with clear ambush positions.

Since I was ignoring the bandits, the bandits kindly alerted me to their presence by sinking two crossbow bolts into me. “Hey!” exclaimed I, “free crossbow bolts!” “Ow!”

Ellryn split one way, Zalandrin the other. Naivara stayed with the wagons to aid both. And I…

Well, I cast my first effectual spell of the entire campaign thus far. When last we leveled, I shook up my songbook a bit. I’d been going heavy on RP spells that had precious little use in a fight. Most fights I’d just been doing with no song on my lips whatsoever. MAYBE a little vicious mockery.

Ellryn had taken down one of the three bandits on his side of the wagon train. I strummed a powerful chord on my Cittern and Shatter tore one of the bandits apart. The other was left hurt and deafened, an easy target for Ellryn to finish off.

We all joined Zalandrin on the other side of the wagons to finish the wetwork. Ambush done, seven shiny silver to split between us from the emaciated corpses. Banditry really wasn’t paying too well for these guys.

A couple more days uneventful travel (steppeth thee 1,230,748th!) brought us to the inn. The wagons were unloaded into the warehouse, with the boring stuff left in a common area, and the stuff we undoubtedly should be caring about locked securely in a separate room. We were given rooms on the upper floor. It would soon be time to get some answers to questions regarding the cultists and their mysterious cargo…

… in the next session.

Had a really fun time! I’ve gotten out of the habit of writing up our D&D sessions; I was just so pumped that we’re playing again!