Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."




quote:

TIS-100 is an open-ended programming game by Zachtronics, the creators of SpaceChem and Infinifactory, in which you rewrite corrupted code segments to repair the TIS-100 and unlock its secrets. It’s the assembly language programming game you never asked for!



It's about programming a fictional 80s microcomputer. If that somehow sounds fun, this might be the game for you. Obstacles include: an instruction set limited to 13 opcodes, managing multiple cores - each limited to 15 instructions and one directly addressable register - and spooky notes left by its previous owner.

Links:
Tips:
  • Unlike Intel syntax, the source operand comes before the destination.
  • If printing the manual isn't practical, you can get a quick reference for the instruction set by pressing F1
  • You can move data between nodes directly: MOV LEFT, RIGHT
  • JRO can take a direction as an input, letting you control flow from another node while preserving ACC
  • JRO -999 works as a "jump to start" shorthand
  • You can jump between nodes with Ctrl+arrow keys
  • You can move values back where they came from (ex. MOV LEFT, LEFT), which can be used to turn nodes into single-use registers.

overeager overeater fucked around with this message at 01:20 on Jun 7, 2015

Adbot
ADBOT LOVES YOU

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
The thing I actually want most in this game is some real keybindings. You won't believe how many times I've inserted ddkp into the program while trying to rearrange things.

I binged through most of the levels last night, just primes and sorting to go. And my brain has wasted most of today designing a solution to the former one. Game is addictive and I haven't even started seriously thinking about optimisation yet.

Anticheese
Feb 13, 2008

$60,000,000 sexbot
:rodimus:

I blasted through the first six levels sometime after midnight without having written a single line of code in years, and I'm staring at what I wrote and the next set of challenges in confusion the next day.

A+, would buy again.

Quinton
Apr 25, 2004

After poking around for a bit launch morning, I took a vacation day and completed 17 of the 20 puzzles. I've now only got the Primes and Sorting to do (they are a bit of a pain given the constraints), but keep going back to re-optimize stuff as various friends on Steam start turning up on the histograms with faster run-times.

It is an evil, evil game, and entirely too much fun.

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord

Vlad the Retailer posted:

  • Unlike Intel syntax, the source operand comes before the destination.

Heck yes AT&T syntax!

ymgve
Jan 2, 2004


:dukedog:
Offensive Clock
Anyone managed to solve the second last challenge, the sorting challenge yet? I know what I must do but there are so many communication pathways that will cross through each other to make it viable that I don't even know where to start.

Wild M
Oct 19, 2007

Assignment Complete! REACTION ERROR: Collisions between atoms are not allowed in reaction programs. The reaction will now be stopped.
I haven't done that one yet, but don't you just have to shuffle numbers between the stacks and inject new numbers in their proper place after doing some subtraction and comparison? Though I don't recall the node structure there.

Game is too good for how much development went into it.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem

Wild M posted:

I haven't done that one yet, but don't you just have to shuffle numbers between the stacks and inject new numbers in their proper place after doing some subtraction and comparison? Though I don't recall the node structure there.

Game is too good for how much development went into it.

That's the basic strategy, yeah - you use your two stacks to emulate a list, and then use whatever sorting algorithm you can implement in the space constraints to sort it.

Much of the complexity comes from the fact that the node arrangement is rather pants-on-head and (I assume deliberately) designed to require lots of instructions just moving things around and leaving you squeezed for actual code space.

zedprime
Jun 9, 2007

yospos
:stonklol:


Well played game. The opaque 3x3 sprites not working are a bitch and handling it pixel by pixel is a garbage amount of data to wrangle and a perfectly placed error node to keep you from going comfortably wide, am I missing a simple transformation to describe those shapes? Otherwise I'll get back to trying to find enough lines to cram everything in.

Dr. Stab
Sep 12, 2010
👨🏻‍⚕️🩺🔪🙀😱🙀
the way I did it was to draw that red dot in at the end and then just keep trying until the random case fits.

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



I haven't solved Primes yet, but if you're doing trial division, it's helpful to keep in mind that you only need to check against the primes below (and including)

Prenton
Feb 17, 2011

Ner nerr-nerrr ner
Time to brush up with my trusty machine code manual

http://mocagh.org/usborne-hayes/machinecodebeginners.pdf

quote:

Unlike Intel syntax, the source operand comes before the destination.
Yesss. It should always be MOVE A to B, or LOAD A with B

Quinton
Apr 25, 2004

zedprime posted:

:stonklol:


Well played game. The opaque 3x3 sprites not working are a bitch and handling it pixel by pixel is a garbage amount of data to wrangle and a perfectly placed error node to keep you from going comfortably wide, am I missing a simple transformation to describe those shapes? Otherwise I'll get back to trying to find enough lines to cram everything in.

My approach to this one used a lot of instructions but was pretty quick.

I generate a stream of 5 relative coordinate pairs per sprite and add them to the base coordinates from the input.

I also started with opaque 3x3 sprites and was annoyed to discover that no, that wasn't going to work.

EngineerSean
Feb 9, 2004

by zen death robot
does this game have music?

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



EngineerSean posted:

does this game have music?

It doesn't at the moment. For music I'd suggest putting on either SomaFM's Groove Salad or Space Station in the background. Their DEFCON station would probably fit too.

SupSuper
Apr 8, 2009

At the Heart of the city is an Alien horror, so vile and so powerful that not even death can claim it.

Prenton posted:

Time to brush up with my trusty machine code manual

http://mocagh.org/usborne-hayes/machinecodebeginners.pdf

Yesss. It should always be MOVE A to B, or LOAD A with B
Not if you expect it to be analogous to A := B :v:

zedprime
Jun 9, 2007

yospos

Quinton posted:

My approach to this one used a lot of instructions but was pretty quick.

I generate a stream of 5 relative coordinate pairs per sprite and add them to the base coordinates from the input.

I also started with opaque 3x3 sprites and was annoyed to discover that no, that wasn't going to work.
Did it thanks to that. I think my brain had written off a relative transform as too wide with that corner node out of commission which is an odd thing to get stuck on since you aren't about to fit instructions for two cases of sprite in one node while directing it where it needs to go. Offloading to a transform node means I suddenly had room to pass the white or red key to everything which was my unfounded hangup. Its nearly as simple as the opaque code and a lot drat sexier.

I could watch this thing run for minutes, its amazing how entertained you can be by the simplest thing when its your simplest thing.

ymgve
Jan 2, 2004


:dukedog:
Offensive Clock
I should really go back and modify some solutions so they use JRO. Way too many of my solutions stash things in BAK just so I can receive a flag from another node and branch on it.

Awesome!
Oct 17, 2008

Ready for adventure!


i havent tried this yet due to splatoon and pinball but i am happy to see a thread for the 10 of us who fit the niche

RadicalR
Jan 20, 2008

"Businessmen are the symbol of a free society
---
the symbol of America."
gently caress this game. I start it up and next thing I know, it's 1 in the morning.

I get the concept of what I want to do, but it's hard to make the code to do it...

DOUBLE CLICK HERE
Feb 5, 2005
WA3
i love this game and all zachtronic games. i also like sc2, so basically if a game can serve as a ready reminder im dumb as hell i love it to bits.

Alkydere
Jun 7, 2010
Capitol: A building or complex of buildings in which any legislature meets.
Capital: A city designated as a legislative seat by the government or some other authority, often the city in which the government is located; otherwise the most important city within a country or a subdivision of it.



Wild M posted:

I haven't done that one yet, but don't you just have to shuffle numbers between the stacks and inject new numbers in their proper place after doing some subtraction and comparison? Though I don't recall the node structure there.

Game is too good for how much development went into it.

So I take it you're enjoying your gift, then? :v:

zedprime
Jun 9, 2007

yospos
The last row is all the horror stories my computer savvy math professors told us about how horrible the computer guts really are for division, made manifest.

Orthogonalus
Feb 26, 2008
Right angles ONLY
I fit the niche for this game perfectly. Until the last row. gently caress the last row forever.

EngineerSean
Feb 9, 2004

by zen death robot

Vlad the Retailer posted:

It doesn't at the moment. For music I'd suggest putting on either SomaFM's Groove Salad or Space Station in the background. Their DEFCON station would probably fit too.

Thanks

ymgve
Jan 2, 2004


:dukedog:
Offensive Clock

Orthogonalus posted:

I fit the niche for this game perfectly. Until the last row. gently caress the last row forever.

If you just want to open the final level, do the division one. You've supposedly already done multiplication, so you "just" have to do the opposite.

If you want to 100% the last row...well...

Bhodi
Dec 9, 2007

Oh, it's just a cat.
Pillbug
I was in the running in spacechem and infinifactory but I am just not getting this game. For example, I'm trying to do pattern recognition with:


JRO 2
S: MOV 0, DOWN
R: MOV 1, ACC
SUB UP
JNZ S
MOV 0, DOWN
MOV 5, ACC
SUB UP
JNZ S
MOV 0, DOWN
MOV 4, ACC
SUB UP
JNZ Z
MOV 1, DOWN
JMP R

but it doesn't handle the edge case with 2 1s in a row. Am I supposed to spread the logic out among the different cores? I'm not even sure how to tackle flow control or testing since i can only have one register to store stuff in. And I'm at the max number of lines, so...

Bhodi fucked around with this message at 00:57 on Jun 4, 2015

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
In general yeah, you should be splitting things across nodes if you can. For example, if your first node zeroes out everything that isn't 1, 4 or 5, that makes signaling easier. Also remember that you have the position of the instruction being executed as effectively another piece of state.

--

Primes ended up being fairly straightforward, though of course it took forever to run. There are a bunch of optimisations I need to do on that.

zedprime
Jun 9, 2007

yospos
The histograms are very clear I'm not going to win any awards for any category but I had 3 parallel stacks running similar checks so for the sequence abcde, the first stack would report on abc, the second stack on bcd, and the third stack on cde. The offset in feed seemed to be enough to prevent a race and keep them reporting in order while sharing moving nodes.

RadicalR
Jan 20, 2008

"Businessmen are the symbol of a free society
---
the symbol of America."

Jabor posted:

In general yeah, you should be splitting things across nodes if you can. For example, if your first node zeroes out everything that isn't 1, 4 or 5, that makes signaling easier. Also remember that you have the position of the instruction being executed as effectively another piece of state.

--

Primes ended up being fairly straightforward, though of course it took forever to run. There are a bunch of optimisations I need to do on that.

I'm baffled. How can you zero out everything that isn't 1, 4 or 5?

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



RadicalR posted:

I'm baffled. How can you zero out everything that isn't 1, 4 or 5?

If I've got the idea right:


START:
MOV UP, ACC
SAV
SUB 1
JEZ SEND
SUB 3
JEZ SEND
SUB 1
JEZ SEND
MOV 0, DOWN
JMP START
SEND: SWP
MOV ACC, DOWN



should send 1, 4, and 5 to DOWN while making everything else zero.

FreshCutFries
Sep 15, 2007

i once coded a simple game for the Atari 2600 in 6502 assembly, so i think this game would give me ptsd flashbacks

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



Just solved the RLE image decoder :stonk:

Wild M
Oct 19, 2007

Assignment Complete! REACTION ERROR: Collisions between atoms are not allowed in reaction programs. The reaction will now be stopped.

Vlad the Retailer posted:

Just solved the RLE image decoder :stonk:

WHICH YOU CAN'T REPLAY. So if you want to optimize, you'd better not let it finish!

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



Wild M posted:

WHICH YOU CAN'T REPLAY. So if you want to optimize, you'd better not let it finish!

I think I'm fine with not optimizing whatever the hell that was

I can't really think of a more efficient solution, besides :(

THE PENETRATOR
Jul 27, 2014

by Lowtax
"game"

Quinton
Apr 25, 2004

I went with a really trivial convert RLE sequences to sequence of color numbers, feed that from one edge, feed X values from another edge, feed Y values from a third edge, and fuse them into X, Y, C, -1 and spit them out. Super straight forward, skips the trickiness with needing to break the sequences at the right edge (since single draw commands cannot wrap onto the next line), but not nearly most optimal.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem

Quinton posted:

I went with a really trivial convert RLE sequences to sequence of color numbers, feed that from one edge, feed X values from another edge, feed Y values from a third edge, and fuse them into X, Y, C, -1 and spit them out. Super straight forward, skips the trickiness with needing to break the sequences at the right edge (since single draw commands cannot wrap onto the next line), but not nearly most optimal.

This is basically what I did as well. There's a really obvious optimisation that I only realised after finishing it.

overeager overeater
Oct 16, 2011

"The cosmonauts were transfixed with wonderment as the sun set - over the Earth - there lucklessly, untethered Comrade Todd on fire."



Quinton posted:

I went with a really trivial convert RLE sequences to sequence of color numbers, feed that from one edge, feed X values from another edge, feed Y values from a third edge, and fuse them into X, Y, C, -1 and spit them out. Super straight forward, skips the trickiness with needing to break the sequences at the right edge (since single draw commands cannot wrap onto the next line), but not nearly most optimal.

That was my solution except I managed to fit the X/Y value iteration into one node, giving me a plotter capable of drawing whatever color sequence it was fed. With an extra node to handle the RLE sequence, the solution ended up fitting into two nodes (with two extra transport nodes)

Adbot
ADBOT LOVES YOU

zedprime
Jun 9, 2007

yospos
You're right, the TIS-100 is closer to art. :nws:???? http://i.imgur.com/ra4zuGR.png

Freeform drawing program I made in case you want to laugh at bad code or draw dicks yourself on pastebin

  • Locked thread