Somewhat proudly presenting...
TIS-8
Introduction
This is a demake of possibly the least visually compelling and overall ill-suited games to port to Pico-8; TIS-100!
If you are familiar with Zachtronics games (and frankly why wouldn't you be?), you will be aware of this game already but in case you aren't, here's a (non-manual) way of explaining what it is:
TIS-100 is a virtual computer system produced in 1972 featuring a multiple-core architecture. Basic Execution Nodes can have up to 16 lines of assembler-esque code written into them and data is passed from one core to another. Each core only has one accumulator register and a non-interactable bak register. There are also Stack Memory Modules which can have up to 16 numbers pushed to and popped from them. The goal of the game is to read the instructions for each level, take the inputs from the top and using the nodes and modules, output the correct values at the bottom.
Cart features
- the first 17 levels that only feature Basic Execution Nodes and Stack Memory Modules. The Visualization Module isn't implemented in this.
- mostly near as damnit accuracy of the original game. I can't say that the tick/cycle counts will be the same (they won't) or that the ANY orders are the same when multiple nodes are all in read or write contention, but that shouldn't impact on your gameplay experience.
- high scores are saved but understandably code is not. copy and pasting level data is included but was mostly used for playtesting and there is no error checking on paste.
- a somewhat comprehensive version of the manual is included for those that aren't familiar with syntax.
Notes on control
Obviously taking a 100% keyboard driven game and mapping it to a dpad and two buttons isn't easy or even sensible, but I've hopefully made it as painless as possible. I did not want to enable devmode for this game as your Pico-8 didn't ship with a keyboard out of the box! Plus I wanted to play the game on my Linux based handheld emulator device. Controls are described at the top of the manual.
Change focus between three elements; playback, editor and navigation. Circle generally enters and allows edit, whereas Cross backs out. Setting labels on code is probably least intuitive and could do with a slight tweak, but I wanted to ship this nice and quick and it isn't so bad once you get used to it.
Final notes / disclaimer
I hope anyone who enjoyed playing the PC version enjoys this, even if it's a funny diversion. I enjoyed playtesting it and surprisingly the one-node-per-screen limitation wasn't as much of an issue as I feared.
I have done my best to make sure inputs and outputs are correct, but entering hundreds of numbers on a 65 key keyboard is likely to result in a typo and if that has happened, I apologize wholeheartedly. Let me know if there's an issue and I'll fix it. Likewise if you notice an issue with code you've written, please drop a comment below and I'll see what I can do. Tokens and most of all size are quite tight now.
Lastly, if the thought of playing this game interests you and you have not played the original (or any Zachtronics game), please please please check them out. Zachtronics literally gave birth to the Zach-like subgenre of puzzle games so give them a little love! Zachtronics' website
Awesome demake! This is going straight to my favorite list :)
Here's my workbenches so far:
Edit:
Found a small bug (Level 7 Spoilers):
Hi Verb and thank you for playing my game - you've made my day knowing that someone likes it enough to complete a level, let alone six!
I've fixed the cut bug you found - I didn't reindex labels in the right place so it's working correctly now.
Using ANY as a source (ex: MOV ANY ACC) doesn't seem to be working.
@Verb that's fixed now - thanks for flagging. Also reduced the size of the playback widget when the nav widget is focused, so you can see the last few lines of code better.
Thank you for your continued development and bug-fixing!
It looks like ANY now works for the first - and only the first - line, and then functions like a NOP afterwards in that it ignores inputs.
@Verb no problem - sorry I can't get a bug free release. I've fixed the repeat ANY problem and hopefully haven't introduced another issue! I can't leave this cart with any glaring problems otherwise it might as well not be on here, so keep the bug reports coming.
Got all but the last one. Here's my updated list:
1-9
10-16
I'm sure I could improve my time on Level 15 if I included a check for divisions by 1 but haven't gotten around to it. Also sorry, I never ended up using "ANY" 😛
This game control is awesome and hard, but awesome. I hope I can manage to write some code into a node someday. I have played TIS-100 and I love SpaceChem. Thx for this cart.
Added a division-by-1 check on Signal Divider and improved my time by about 40% :) Edit: ~47%
[Please log in to post a comment]