TIS-100

TIS-100

166 ratings
Achievements Guide V0.2
By CrazyIvanTR
This guide will focus on achievements only. All inputs are welcome. I will try to update as frequently as I can.
2
5
   
Award
Favorite
Favorited
Unfavorite
About The Guide
This guide makes the assumption that you have read the manual, or at least know a little bit about assembly and have played a few levels. I will upload images of the whole codes, however, mine might or might not be optimized or to your liking. Use at your own leisure.

If you want to contribute, I only need a screenshot. I will put your code in as soon as I can and will add you to the list. I might or might not test the codes, if any of them prove useless, just leave a comment below and I'll take a look.

Special Thanks to:
Groove
michael_kuerbis
Daverball
PARALLELIZE
Thanks to VackaeP for pointing out the first one was not actually optimized.
I'll include his solution here.
Thanks to Kevio42, a better solution can be found here.
As the name suggests, this needs parallelization to work. Here's the code:
BUSY_LOOP
In this first achievement (not counting the manual achievement of course) you just have to keep the loop busy. We do this by taking the input hostage. In place of ANY, write whatever direction you want to.
Here's the code:
Sent by snp123, this code has over 117 million cycles.
This is for just ONE NODE.
He says it could go well over 500 million with all nodes active but no one had the courage to delve that deep :O
NO_BACKUP
This solution is here thanks to Groove. Here's the solution:
Another solution can be found herethanks to Raddox.
One more solution is here thanks to Prism.
Another solution is here thanks to snp123.
NO_MEMORY
My thanks to Daverball who sent this solution and he says:
"It's certainly not the cleanest solution, but it does work, it uses 6 of the nodes as the 6 memory cells necessary to store the entire sequence. The solution gets mainly complicated and messy because some of the nodes that make up the stack are also being used to forward values from the input to the output node.

I first tried to make the stack using just the 3 nodes on the right-most column, since each node has storage for two values potentially, but I couldn't fit the stack logic for two memory cells into just one node.
"
Here's the solution:
We now have a fewer nodes version thanks to Dopple, you can find it here.

Also a 4 node solution can be found here thanks to grudgekeyper:
HALT_AND_CATCH_FIRE
Thanks to michael_kuerbis for this solution.
Minor spoilers ahead:
Make a machine execute the undocumented opcode HCF.
Pretty straightforward, just type in HCF in one of your codes and burn it all down!
Just kidding, this won't burn anything down, your saves are safe.
UNCONDITIONAL
We reach this one by using JRO and a few number tricks. We change the [-2, 2] inputs into [1, 9] and use JRO with ACC, essentially making a switch case. Here's the code:
Another code can be found herethanks to Raddox.
Thanks to inspector, another way to go about the first solution can be found here.
Another solution can be found here, sent by snp123.
RTFM
If you missed the manual, or just skipped it and tried to understand the game without it (which is pretty hard), you can get this achievement by simply pressing escape, and choosing TIS-100 manual from the menu. As this achievement is pretty easy, it will be at the bottom.
ILLEGAL_EAGLE
Secret level guide thanks to michael_kuerbis.
WARNING! Spoilers Follow:
How to get there:
Hint 1: Study the highlighted text in the manual.
Hint 2: Which terminal command (not assembly instruction) seems useless?
Hint 3: What does the eagle do?
Answer: On the level selection screen, hit F2 and click on the eagle.
How to solve:
Read a sequence from IN, it is terminated with -1. Clamp each value to [0, 1, 2]. Write the clamped value to OUT.R. Count the length of a clamped sequence where consecutive values are the same. When such a sequence end, write its length and the sequence value to OUT.E. 2222 mean 4, 2, 000 mean 3, 0.
Solution image.
Again, thanks to michael_kuerbis for searching for a solution and optimizing it.
59 Comments
norf britan gamin 20 May @ 12:48pm 
Solution for Illegal Eagle in words, since I think it's a bit vague in the guide:

Out.R should be floor(In/25). I.e. return the quotient to In divided by 25 to OUT.R.
Take the Out.R values. Return the number of consecutive values, followed by the values themselves.
For example: The sequence 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,0,0 has 8 zeros, then 4 ones, then 3 twos, then two zeros. Out.E should be 8,0,4,1,3,2,2,0.
Chris Vile 29 Apr @ 9:39am 
I copied the structure of snp123's plan and filled the free lines with NOPs, achieving around 858 million cycles. Each test run took about 8 hours - with the cheat engine speedhack activated.
AlexOnFyre 3 Jan @ 12:55am 
This is a larger solution to ILLEGAL_EAGLE, but it is pretty fast. Not as slick as some of the others, but it is different: https://sp.zhabite.com/sharedfiles/filedetails/?id=3399376520
1pq029 24 May, 2024 @ 5:26am 
Here's 5 node solution for ILLEGAL_EAGLE.
https://youtu.be/9eTEs821p3k
Dmitri 16 Mar, 2024 @ 11:32pm 
sorry my math was wrong, I think its
(999^5) / (4000 counts / second) / 60 / 60 / 60 / 24 / 365 =~131 years
still a long time
Dmitri 16 Mar, 2024 @ 11:25pm 
I got it to work: https://sp.zhabite.com/id/da_dmitri/screenshot/2432579266209458861/
It uses nested counters that wait on the previous one. Once the final counter expires, it sends a signal back up the chain to start sending the actual data
this should run for at least 999^5 cycles, and take about 10 thousand years to complete.
Pony Cannon 15 Oct, 2021 @ 2:52am 
For BUSY_LOOP, it is only necessary to do more than 100,000 cycles, and this can be done by looping in a single node to throttle the passing of the input to the output, the following does it in just over 100,000 cycles, and requires less typing than the suggested solutions above.

https://sp.zhabite.com/sharedfiles/filedetails/?id=2628363009
reverze 18 Apr, 2021 @ 1:22pm 
another take for NO_MEMORY, presumably the one Daverball tried;
the trick is to use the upper node to load the values into the memory and have the memory blocks communicating to output the values to the bottom exit node
https://sp.zhabite.com/sharedfiles/filedetails/?id=2461518431
Sio 3 Jan, 2021 @ 3:24am 
Here's an alternative solution for ILLEGAL_EAGLE: https://sp.zhabite.com/sharedfiles/filedetails/?id=2347844517
ThVortex 15 Mar, 2020 @ 2:39pm 
My solution to UNCONDITIONAL which doesn't use JRO and relies on "saturation arithmetic". I start by clamping the input to -1,0,1.