TIS-100

TIS-100

View Stats:
NuclearTophat Mar 19, 2020 @ 12:32pm
Would you say this game might be a decent way to understand assembly? or...no
Its a stupid question, im well aware, I was interested in attempting to learn some assembly code and noticed that from some screenshots, the syntax for certain actions seemed similar.

I know obviously, the syntax might differ greatly, or completely, but my thoughts were that it might at least provide a bit of a gateway to it. Ex: Hacknet doesnt teach you ♥♥♥♥♥♥♥ about hacking, but it does teach you actual linux syntax for a few commands, for instance. Would you say TIS-100 is the same?
< >
Showing 1-6 of 6 comments
Almozada Mar 20, 2020 @ 9:40pm 
This is not a stupid question. I have a passion for programming and computer architecture which caused me to come looking for this game after a year or so of not playing. I am a software engineer and sometimes after a frustrating day at work I want to come home and start a problem that I can actually solve and verify. I think that the storing of intermediary results in the nodes is reminiscent of key digital logic structures, and a great introduction to ideas like synchronous logic and D type flip-flops. The commands themselves remind me of a sort of simplified RISC-V ISA or MIPS. More importantly, the structure of approaching these problems is very similar to how one could approach a digital design problem. Being able to solve complex problems with simple tools, and even reading the simple spec this game provides would be key in learning assembly.

I answer this based off computer architecture and digital design classes I took in college, and some years of being a software engineer. I really loved learning assembly, the this game satisfies a similar itch.
DaMunky89 Mar 30, 2020 @ 1:55pm 
As someone who actually studied and programmed assembly in college (LC-3 Simulator) I'll say that certain things are lifted very directly (coding via short opcodes, creating your own loops and program flow via jump commands, managing the storage of values given limited hardware space, etc).

There are other concerns that are much more "puzzle game". They feel thematically sensible for this kind of machine, but multi-threading via tessellation is a very strange approach. (I really like the in-story premise that the TIS maybe came from an alternate dimension.)

I'd say that this game is super excellent for training yourself on algorithms and is definitely worthwhile for anybody with an interest in programming. That being said, the best way to learn assembly would be to download a simulated assembly machine (like the LC-3 mentioned above) and do some projects with it.
Last edited by DaMunky89; Mar 30, 2020 @ 1:56pm
NuclearTophat Mar 31, 2020 @ 8:40pm 
Originally posted by DaMunky89:
As someone who actually studied and programmed assembly in college (LC-3 Simulator) I'll say that certain things are lifted very directly (coding via short opcodes, creating your own loops and program flow via jump commands, managing the storage of values given limited hardware space, etc).

There are other concerns that are much more "puzzle game". They feel thematically sensible for this kind of machine, but multi-threading via tessellation is a very strange approach. (I really like the in-story premise that the TIS maybe came from an alternate dimension.)

I'd say that this game is super excellent for training yourself on algorithms and is definitely worthwhile for anybody with an interest in programming. That being said, the best way to learn assembly would be to download a simulated assembly machine (like the LC-3 mentioned above) and do some projects with it.
Interesting, i might end up checking that LC-3 thing out. thanks!
Dino Rick Apr 6, 2020 @ 2:32am 
Its been a while since I have worked on "hand-crafted" code which is a euphemism for working with assembly code. After playing for a while, it reminded me why this type of programming can be so frustrating and slow to develop and debug.

TIS-100 is a real (but simple) simulation of what goes on with coding at that level. The concepts used here like registers and instructions (especially the jump commands) are exactly what you will find elsewhere. You will also learn about some high level ideas like deadlock, concurrency, and even thread maintenance. You will learn how ideas can be turned into numbers and vice versa.

You will become very aware of the hardware (or in this case the built in) limitations of the specific computer architecture. Things like, dang, I need another register that isn't there. The data stack in the game reminded me of the 6502 CPU stack found on old Apples and C64s. It really is amazing how much can be accomplished at this level.

But it is not for everybody. This simulation will not teach you about the addressing techniques used with today's CPUs. And don't expect it to teach you good programming habits either. Probably the best way to learn is to first try create the program by yourself. Then compare your program to others and see how it can be improved. Other solutions are easily found on youtube and the net and are excellent sources for programming ideas.

I must admit I get an odd sense of accomplishment when I finally figure out some puzzle and manage to get the code crammed and running in the limited boxes. Its fun to watch the code lines light up and do their thing. Enjoy.
Last edited by Dino Rick; Apr 7, 2020 @ 11:32pm
obamafish Apr 27, 2020 @ 5:27pm 
Just wanted to chime in and say that all the points above are valid and great, but if you want to learn the x86 assembly specifically, there should be nothing stopping you from firing up a debugger like OllyDbg or Cheat Engine (yes it has a pretty fully featured debugger built into it) and trying to make sense of some small-ish non-obfuscated programs. Or better yet, try writing some simple program in C/C++ and then disassemble the executable file — you may be surprised how much of the compiler generated assembly you will understand once the initial shock of seeing all those MOVs, ADDs and CMPs is over.
While learning how to write efficient code in assembly may take years, reading assembly should be surprisingly easy, especially if you already know some non-interpreted language such as C, and might be a fun first step on your way to learning low level programming. If you're feeling stuck, there's also a decent x86 assembly primer called Programming from the Ground Up[download-mirror.savannah.gnu.org], you may want to look into it as well.
Last edited by obamafish; Apr 27, 2020 @ 5:46pm
Eye of Newt May 28, 2021 @ 9:50pm 
My experience is also from the 6502 days and I can definitely say that this game does teach decent RISC-type assembly language principles as well as give you a feel for what it's like to "code so close to the metal". :) The similarities in the JRO instruction and the BNE/BEQ/etc type instructions were intriguing in particular. :P
< >
Showing 1-6 of 6 comments
Per page: 1530 50