Log In  

Somewhat proudly presenting...

TIS-8

Cart #tis_8_e-0 | 2023-05-21 | Code ▽ | Embed ▽ | No License
11

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

P#129935 2023-05-19 20:06 ( Edited 2023-05-21 19:46)

1

Awesome demake! This is going straight to my favorite list :)
Here's my workbenches so far:

Level 1: Self-Test Diagnostic (157)
1,1#,2,up,3;1,3#,2,right,3;1,4#,2,up,4;2,1#,2,up,3;2,3#,2,up,3;3,1#,2,up,3;3,3#,2,up,5;3,4#,2,left,3

Level 2: Signal Amplifier (236)
1,2#,2,up,1;1,2#,5,acc,;1,2#,2,acc,5;1,3#,2,left,3;1,4#,2,up,4;2,3#,2,up,3;3,1#,2,up,3;3,3#,2,up,3

Level 3: Differential Converter (508)
1,2#,2,up,1;1,2#,4,,;1,2#,6,right,;1,2#,2,acc,3;1,2#,3,,;1,2#,2,acc,5;1,3#,2,up,1;1,3#,2,acc,4;1,3#,6,left,;1,3#,2,acc,3;2,2#,2,up,3;2,3#,2,up,3;3,2#,2,up,3;3,3#,2,up,3

Level 4: Signal Comparator (564)
1,1#,2,up,1;1,1#,9,1,;1,1#,12,2,;1,1#,2,1,3;1,1#,2,0,3;1,1#,2,0,3;1,1#,8,3,;1,1#1,2,0,3;1,1#,2,1,3;1,1#,2,0,3;1,1#,8,3,;1,1#2,2,0,3;1,1#,2,0,3;1,1#,2,1,3;1,1#3,1,,;2,1#,2,up,3;3,1#,2,up,5;3,2#,2,left,3;3,2#,2,left,5;3,2#,2,left,5;3,3#,2,left,3;3,3#,2,left,5;3,4#,2,left,3

Level 5: Signal Multiplexer (374)
1,2#,2,up,5;1,3#,2,up,1;1,3#,11,1,;1,3#,9,2,;1,3#,2,left,3;1,3#,2,right,8;1,3#,8,3,;1,3#1,2,right,3;1,3#,2,left,8;1,3#,8,3,;1,3#2,2,left,1;1,3#,5,right,;1,3#,2,acc,3;1,3#3,1,,;1,4#,2,up,4;2,3#,2,up,3;3,3#,2,up,3

Level 6: Sequence Generator (185)
1,2#,2,up,1;1,2#,2,acc,5;1,2#,2,acc,5;1,3#,2,up,1;1,3#,4,,;1,3#,6,left,;1,3#,11,1,;1,3#,3,,;1,3#,2,acc,3;1,3#,2,left,3;1,3#,8,2,;1,3#1,2,left,3;1,3#,3,,;1,3#,2,acc,3;1,3#2,1,,;2,3#,2,up,3;3,3#,2,up,3;3,3#,2,up,3;3,3#,2,0,3

Level 7: Sequence Counter (522)
1,1#,5,right,;1,1#,2,acc,5;1,2#,2,up,1;1,2#,10,1,;1,2#,2,0,5;1,2#,2,0,4;1,2#,2,left,1;1,2#,2,acc,3;1,2#,7,,;1,2#,2,acc,4;1,2#,2,left,8;1,2#,8,2,;1,2#1,2,1,5;1,2#,2,acc,4;1,2#,2,left,8;1,2#2,1,,;1,3#,2,left,3;2,2#,2,up,3;2,3#,2,up,1;2,3#,10,1,;2,3#,2,0,5;2,3#,2,right,1;2,3#,2,acc,3;2,3#,7,,;2,3#,2,acc,5;2,3#,2,right,8;2,3#,8,2,;2,3#1,2,acc,5;2,3#,2,right,8;2,3#2,1,,;2,4#,5,left,;2,4#,2,acc,4;3,2#,2,up,3;3,3#,2,up,3

Level 8: Signal Edge Detector (593)
1,2#,2,up,1;1,2#,4,,;1,2#,6,right,;1,2#,12,1,;1,2#,8,2,;1,2#1,7,,;1,2#2,6,10,;1,2#,12,3,;1,2#,2,1,5;1,2#,8,4,;1,2#3,2,0,5;1,2#4,3,,;1,2#,2,acc,5;1,3#,2,acc,4;1,3#,2,left,3;1,3#,2,left,1;2,3#,2,up,3;3,3#,2,up,3

Level 9: Interrupt Handler (897)
1,1#,2,up,1;1,1#,11,1,;1,1#,3,,;1,1#,8,3,;1,1#1,3,,;1,1#,9,2,;1,1#,8,3,;1,1#2,2,1,5;1,1#,8,26,;1,1#3,2,0,5;1,1#26,1,,;1,2#,2,left,5;1,2#,2,up,1;1,2#,11,1,;1,2#,3,,;1,2#,8,3,;1,2#1,3,,;1,2#,9,2,;1,2#,8,3,;1,2#2,2,2,5;1,2#,8,26,;1,2#3,2,0,5;1,2#26,1,,;1,3#,2,left,3;1,3#,2,left,3;1,3#,2,up,1;1,3#,11,1,;1,3#,3,,;1,3#,8,3,;1,3#1,3,,;1,3#,9,2,;1,3#,8,3,;1,3#2,2,3,3;1,3#,8,26,;1,3#3,2,0,3;1,3#26,2,right,3;1,4#,2,up,1;1,4#,11,1,;1,4#,3,,;1,4#,8,3,;1,4#1,3,,;1,4#,9,2,;1,4#,8,3,;1,4#2,2,4,4;1,4#,8,26,;1,4#3,2,0,4;1,4#26,1,,;2,3#,5,up,;2,3#,5,up,;2,3#,5,up,;2,3#,5,up,;2,3#,11,1,;2,3#,2,0,3;2,3#,8,2,;2,3#1,2,acc,3;2,3#2,2,0,1;3,3#,2,up,3

(To use the data above, copy it and paste (CTRL+V) on the pico-8 screen, then press Enter within a level and select "Paste workbench".)

Edit:
Found a small bug (Level 7 Spoilers):

Label A had "MOV LEFT to NIL" and Label B was pointing to NOP at first, but I changed it to "MOV LEFT to NIL" to optimize the code. You can see it skips over the first instruction of Label A when running it. Copying and pasting the workbench seems to fix it though.

P#129967 2023-05-20 17:33 ( Edited 2023-05-21 00:08)
1

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.

P#129971 2023-05-20 20:32

Using ANY as a source (ex: MOV ANY ACC) doesn't seem to be working.

P#129976 2023-05-21 00:21
1

@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.

P#129988 2023-05-21 09:50

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.

P#129992 2023-05-21 14:19
1

@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.

P#130004 2023-05-21 19:49
1

Level 10-13 down. Gotta work up some courage for the last few :P

(Hint: Base64)

Level 10: Signal Pattern Detector (671)
MSwxIywyLHJpZ2h0LDE7MSwxIywyLGFjYyw1OzEsMSMsMixhY2MsNTsxLDIjLDIsdXAsMTsxLDIjLDIsdXAsMzsxLDIjMSwyLHVwLDQ7MSwyIywyLGxlZnQsNTsxLDIjLDIsZG93biw1OzEsMiMsMixhY2MsNTsxLDIjLDIsZG93biwxOzEsMiMsMixsZWZ0LDM7MSwyIyw4LDEsOzEsMyMsMixsZWZ0LDM7MiwyIywyLHVwLDE7MiwyIywyLGFjYywyOzIsMiMsMixhY2MsMjsyLDMjLDIsdXAsMzszLDMjLDIsMCwzOzMsMyMsMiwwLDM7MywzIzEsNSx1cCw7MywzIyw1LHVwLDszLDMjLDUsdXAsOzMsMyMsOSwyLDszLDMjLDIsMCwzOzMsMyMsOCwyNiw7MywzIzIsMiwxLDM7MywzIzI2LDIsMCwxOzMsMyMsOCwxLA==

Level 11: Sequence Peak Detector (375)
MSwyIywyLHVwLDE7MSwyIywyLGFjYywzOzEsMiMsMixhY2MsNTsxLDMjMSwyLGxlZnQsMTsxLDMjLDEwLDIsOzEsMyMsMixyaWdodCwxOzEsMyMsMiwtOTk5LDU7MSwzIywyLGFjYywzOzEsMyMsOCwxLDsxLDMjMiw0LCw7MSwzIyw2LHJpZ2h0LDsxLDMjLDExLDMsOzEsMyMsMiwwLDU7MSwzIyw4LDEsOzEsMyMzLDMsLDsxLDMjLDIsYWNjLDU7MSw0IywyLC05OTksMTsxLDQjLDQsLDsxLDQjMSwyLGFjYyw0OzEsNCMsMixsZWZ0LDE7MSw0IywxMCwyLDsxLDQjLDMsLDsxLDQjMiw0LCw7MSw0Iyw4LDEsOzIsMSMsMiw5OTksMTsyLDEjLDQsLDsyLDEjMSwyLGFjYyw1OzIsMSMsMixyaWdodCwxOzIsMSMsMTAsMiw7MiwxIywzLCw7MiwxIzIsNCwsOzIsMSMsOCwxLDsyLDIjMSwyLHVwLDE7MiwyIywxMCwzLDsyLDIjLDIsbGVmdCwxOzIsMiMsMiw5OTksNDsyLDIjLDIsYWNjLDM7MiwyIyw4LDEsOzIsMiMzLDQsLDsyLDIjLDYsbGVmdCw7MiwyIywxMiw0LDsyLDIjLDIsMCw0OzIsMiMsOCwxLDsyLDIjNCwzLCw7MiwyIywyLGFjYyw0OzIsMyMsMix1cCwzOzMsMiMsMix1cCwzOzMsMyMsMix1cCwz

Level 12: Sequence Reverser (558)
MSwyIywyLDAsNTsxLDIjMSwyLHVwLDE7MSwyIyw5LDIsOzEsMiMsMixhY2MsNTsxLDIjLDgsMSw7MSwyIzIsMiwxLDM7MSwyIywyLGRvd24sODsyLDIjLDIsdXAsNTsyLDIjLDIscmlnaHQsMjsyLDMjLDIsbGVmdCw4OzIsMyMxLDIsdXAsMTsyLDMjLDksMiw7MiwzIywyLGFjYywzOzIsMyMsOCwxLDsyLDMjMiwyLDEsNDsyLDMjLDIsMCwzOzMsMyMsMix1cCwz

Level 13: Signal Multiplier (2216)
MSwyIzEsMix1cCwxOzEsMiMyLDIsYWNjLDU7MSwyIyw5LDEsOzEsMiMsNiwxLDsxLDIjLDgsMiw7MSwzIywyLHVwLDE7MSwzIzEsNCwsOzEsMyMsMixsZWZ0LDE7MSwzIyw5LDIsOzEsMyMsMywsOzEsMyMsMixhY2MsNTsxLDMjLDgsMSw7MSwzIzIsMiwtMSw1OzEsMyMsMixyaWdodCwzOzEsNCMxLDIsbGVmdCwxOzEsNCMsMTIsMiw7MSw0IywyLGFjYywzOzEsNCMsMywsOzEsNCMsNSxkb3duLDsxLDQjLDMsLDsxLDQjLDgsMSw7MSw0IzIsMywsOzEsNCMsMixhY2MsNDsxLDQjLDIsMCwxOzEsNCMsNCwsOzIsMyMsMix1cCwzOzIsNCMsMix1cCwxOzIsNCMsMixhY2MsMjszLDMjLDIsdXAsMw==

P#130052 2023-05-23 03:39

This is absolutely awesome.

P#139125 2023-12-24 21:14

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 17:54:44 | 0.045s | Q:27