TIS-100 - The Assembly Language Puzzle Game That Nobody Asked For

  Рет қаралды 241,377

Scott Manley

Scott Manley

Күн бұрын

Пікірлер: 395
@merinsan
@merinsan 9 жыл бұрын
Just what I need...a programming "game" to relax after a hard day of programming...
@orange-vlcybpd2
@orange-vlcybpd2 2 жыл бұрын
@merinsan But it's indeed somehow relaxing, because here you have quite isolated problem description. In real world programming you have to deal with much higher level of complexity.
@pixelpox11
@pixelpox11 2 жыл бұрын
@@orange-vlcybpd2 Agreed:) I just started playing through all the Zachtronics games, and I play them after a full day of programming. They are indeed relaxing :)
@eliseulucenabarros3920
@eliseulucenabarros3920 Жыл бұрын
EXACLYYY
@pikminman13
@pikminman13 11 ай бұрын
@@orange-vlcybpd2while I’m not a programmer, I think there’s something nice about doing something you like without any of the downsides. I can put the game down for a month and there are no consequences. I can struggle on a level with no consequences. You should be doing something you enjoy for work, and the same thing without the stress should be more enjoyable.
@djbarbe
@djbarbe 9 жыл бұрын
It always amazes me that the original Roller Coaster Tycoon was coded in Assembly.
@kieferaland4689
@kieferaland4689 6 жыл бұрын
is that a joke? lol...
@kieferaland4689
@kieferaland4689 6 жыл бұрын
i just found out its not a joke but why would you code a game like that in assembly?
@PreKGraduate
@PreKGraduate 6 жыл бұрын
Kiefer Aland you can optimize the hell out of it. The game is super old, yet look at all the things the game keeps track of. Thousands of people and rides etc. Because of this, you can run the game on a potato without issues. Additionally, it'll run without a complaint on basically any type of system because it's in such a low level language. Idk if chris sawyer had any of those ideas in mind, but those are just a few benefits.
@rodrigoappendino
@rodrigoappendino 3 жыл бұрын
People should program their games in assembly nowadays. Imagine programming GTA V in assembly.
@stan.rarick8556
@stan.rarick8556 3 жыл бұрын
Having been an assembly language programmer for decades, I'm not amazed.. Once you learn the instructions, it's not a big deal,
@dog942
@dog942 9 жыл бұрын
Big tip for anyone playing this.... Print the manual for maximum nostalgia value and ease of use. It comes out of the printer messy looking and its awesome. And you definitely want to play full screen. Printing the manual is definitely what the developer had in mind when making this game which is AWESOME.
@Davidn1
@Davidn1 9 жыл бұрын
Assembly is beautiful. At its simplest, it is just human representations of instructions and data stored in binary. There is no abstraction (except assembler strucs and macros), you literally control the hardware, the registers, the memory, the stack, the interrupt vector table, memory segments, paging. You get to see the fundamentals of a computer.
@TOASTEngineer
@TOASTEngineer 9 жыл бұрын
David n And then you get to rip your own hair out because things are going wrong and you have no clues as to why.
@frealms
@frealms 9 жыл бұрын
TOASTEngineer Isn't that just a summary of our technological life?
@TOASTEngineer
@TOASTEngineer 9 жыл бұрын
frealms Not really. I'm a Python programmer. Everyone's like "oh my god my code is segfaulting" and I just rub my balls on the keyboard and everything works.
@frealms
@frealms 9 жыл бұрын
TOASTEngineer Now to find out if you are a poser: Do you rub them left to right or right to left?
@TOASTEngineer
@TOASTEngineer 9 жыл бұрын
frealms Left to right until I encounter U+202E, then right to left until I encounter U+202D. I'm like a testicular Turing machine.
@GenuineRazhan
@GenuineRazhan 9 жыл бұрын
Zachtronics is by far the studio with games I love the most that none of my friends play (I think some friends hate me after explaining them how awesome Spacechem and Infinifactory are). Oh, and KSP. None of my friends play KSP either (sadly)
@hmoazed
@hmoazed 2 жыл бұрын
I'm an avid gamer and to this day TIS-100 is one of my most favorite - if not *the* favorite - game of all time.
@stan.rarick8556
@stan.rarick8556 3 жыл бұрын
When I took an assembly language class at Purdue in the mid '60's, the instructor had a program which simulated a fictitious computer with maybe less than a dozen instructions (READ, WRITE, ADD, SUB, TEST, BRANCH, HALT). No parallelism. This was to introduce the concepts of a program before moving on to real hardware.
@stevepittman3770
@stevepittman3770 9 жыл бұрын
Zach Barth, you insist upon consuming all of my brain's clock cycles thinking about the most random shit.. Love it.
@RufusShinraPower
@RufusShinraPower 9 жыл бұрын
I just took Assembly at my University last year. I think we used the IBM 360 version. Seemed really complex in the beginning, but got easier as we went along. Thanks for showing this game =D
@stan.rarick8556
@stan.rarick8556 3 жыл бұрын
Yay IBM. I coded 360 for 46 years and (never mind the assembly) the machine instructions simply make sense the way they are designed. I hate Intel/8080 and luckily have NEVER had to code in it.
@Wuselol
@Wuselol 9 жыл бұрын
And suddenly learning a bit of x86 assembly was all worth it. This game looks awesome. Definitely gonna get it.
@brettefantomet
@brettefantomet 7 жыл бұрын
The 14-page TIS-10 manual fits in nicely on my desk.
@RadRider33
@RadRider33 8 жыл бұрын
Perhaps I'm in the minority, but I've always quite enjoyed ASM. Granted, I've been fortunate enough to write mostly MIPS and ARM assembly, and none of that pesky X86 stuff. But I always enjoyed the optimization aspect of it and I think that's why I like this game.
@_buns_
@_buns_ 9 жыл бұрын
Thanks for making a video on this and getting such a niche game some exposure! I am for sure checking it out now.
@HebaruSan
@HebaruSan 9 жыл бұрын
Sometimes a let's-player is not good at a game. This is not one of those times.
@enjoying28
@enjoying28 9 жыл бұрын
Please more of this game watching you get frustrated is the fun part
@yokmp1
@yokmp1 9 жыл бұрын
In your Signal Amplifies solution you could change MOV UP, DOWN MOV LEFT, DOWN to MOV ANY, DOWN to save 1 instruction. You can't get it more parallelized than 2 operations (numbers) at once. This is because you then need for e.g. 3 operations more than 3 times the instructions so your cyclecount increases. Even if you split it into 4 operations you would need more than 4x the instructions so you don't operate 4 times faster or double as fast as with 2 OPs at once because of your increased cycles ;)
@NovaCyn
@NovaCyn 9 жыл бұрын
That nobody asked for? Well i might not have asked specifically for assembly games, but more Zach stuff is always high on my list of wants and needs
@ChaoticNeutralMatt
@ChaoticNeutralMatt 3 жыл бұрын
Started playing this again, still quite a few things I don't understand and discovering new tricks
@glarynth
@glarynth 9 жыл бұрын
...I don't know whether to thank you or curse you for exposing me to this wonderful timesink.
@TheRealTricky
@TheRealTricky 9 жыл бұрын
Whenever a friend of mine (who is addicted to this game) mentions it to me I always think: "Assembly language programming is an extravagant waste of human talent and should be avoided whenever possible." (which is actually a quote by Peter Norton).
@ThePC007
@ThePC007 5 жыл бұрын
Actually, it shouldn't. Even when you intend on writing your "actual" code in C/C++, I think it's always a good idea to make yourself familiar with whatever hardware you are using by experimenting in Asm first (especially if it's a low-end microprocessor, which may not work the way you are used to from your PC running on x86 hardware. Ex: The ATTiny85 can only shift one bit per cycle, it cannot multiply or divide integers, has no FPU, and takes two cycles to compare a value to another one, regardless of whether the second value is 0 or not, can only perform a "branch if lower" or "branch of equal of higher" instruction, but cannot actually check if a value if "equal or lower" or "greater, but not equal" in a single cycle, etc. This vastly changes how optimized code is written vs. how it would be written for a PC for example.).
@minecrafter1001kid
@minecrafter1001kid 9 жыл бұрын
C++ Let's Play?
@Davidn1
@Davidn1 9 жыл бұрын
AnimationCrafted In what? Visual Studio?
@somethingsmellsoff
@somethingsmellsoff 9 жыл бұрын
AnimationCrafted There is something that kinda does just that, it's called Handmade Hero, where a guy is making a game in C++ from nothing, no pre-made engine, and he isn't even using an IDE, unless you consider EMACS an IDE.
@minecrafter1001kid
@minecrafter1001kid 9 жыл бұрын
Something smells off Thumbs up to that guy, that's the way it should be
@Davidn1
@Davidn1 9 жыл бұрын
Something smells off AnimationCrafted As long as you have system libraries, you're fine. Although, implementing graphics in C++ without DirectX or any engine would be near suicidal.
@Markus9705
@Markus9705 9 жыл бұрын
Something smells off Real programmers use butterflies. Check your XKCD.
@terpcj
@terpcj 9 жыл бұрын
As an olde tyme assembly and microcode programmer (yes, from back when fish hadn't yet considered trudging out onto land), this looks like a lot of fun.
@hobbified
@hobbified 9 жыл бұрын
11:30 a really simple thing you can do here to spread out the work more evenly is to do MOV UP, ACC; ADD LEFT; MOV ACC, RIGHT in the second-from-left node on the second row, and eliminate one of the ADD LEFTs in the third-from-left node. You're shortening up your longest loop (which is usually going to be a throughput bottleneck) and also reducing the amount of data moving (every port read/write takes an extra cycle on each node for handshaking). That lowers the cycle count from 278 to 202, which is close to optimal :)
@maxpoppe
@maxpoppe 6 ай бұрын
this video was motivation for me to buy the game :)
@nitram1666
@nitram1666 9 жыл бұрын
I came back to this video, after playing the game for a while. You jumped past the Sequence Counter just like me! xD
@AllenGarvin
@AllenGarvin 7 жыл бұрын
Looks neat. Last assembly I did anything significant in was in IBM 370, and that was a quarter-century+ ago. But you've convinced me to try this!
@PiMaster9001
@PiMaster9001 9 жыл бұрын
Recently got into programming x64 assembly, will have to give this a play.
@BenChilds
@BenChilds 9 жыл бұрын
Scott Manley There was an amazing old game on Apple II / C64 called Chipwits. It was a puzzle game where you had control of a robot on a grid that you could give instructions to turn, grab items even play musical notes. It used a drop in graphical interface for programming your robot.The intent of the developers was to have you evaluate the problem and do as few instructions as possible to get the goal. 8 year old me cheated and figured out enough conditional logic to make it do a keyboard interface to do the challenges as user input instead of meticulous planning. It might be fodder for a let's play or two down the road if you can find an emulated / fan made game.
@nextProgram
@nextProgram 4 жыл бұрын
I like this game. It’s really difficult and frustrating at times, though
@victorw9403
@victorw9403 3 жыл бұрын
This might have appealed to me 40-years ago, when my brain was 40-years younger and I was actively programming. Nowadays I don't much time for even mindless games, let alone though provoking ones. On the other hand, it's interesting to see such an early Scott Manley video.
@pseudocoder78
@pseudocoder78 9 жыл бұрын
I'd love to see how you tackle the multiplication problem, if you feel like publishing more gameplay!
@nico9901
@nico9901 3 жыл бұрын
the ending scared me my god
@headrockbeats
@headrockbeats 9 жыл бұрын
I -have- hate assembly from the bottom of my heart. I remember first reading about it in a gigantic book I had that teaches you how to do all sorts of things in DOS 5.0. Once it started involving Assembly, I got pissed off and turned the book into a doorstop.
@AsassinF
@AsassinF 9 жыл бұрын
Headrock hate?
@headrockbeats
@headrockbeats 9 жыл бұрын
Shitstain 5000 **Facepalm** Yes.
@AsassinF
@AsassinF 9 жыл бұрын
ah
@Markus9705
@Markus9705 9 жыл бұрын
Headrock Assembly is fun!
@headrockbeats
@headrockbeats 9 жыл бұрын
TheLeftLibertarianAtheist Great fun. Like an enema.
@ALavaPenguin
@ALavaPenguin 9 жыл бұрын
As an assembly language programmer just watching this video got me excited. Looks very fun. Interesting instruction set but assembly language users have to get used to swapping instruction sets a lot anyway.
@cuteraptor42
@cuteraptor42 9 жыл бұрын
I used assembly language for some years and I think that there is more CPU without SUB than without ADD. To execute a substraction, you add the negated number, invert all the bits and add +1 (often it's an increment INC function). Anyway, when sometimes some CPU let even MULT, you're in heaven. DIV is an utopia..
@Markus9705
@Markus9705 9 жыл бұрын
R4P70R Most processors I've worked with had has ADD. Some DIV.
@jochen_schueller
@jochen_schueller 4 жыл бұрын
I think ADD is the bare minimum of arithmetic a CPU has to support to be able to do anything useful
@eliotcougar
@eliotcougar 9 жыл бұрын
The way you do multiplication in computers in NOT "Add A to buffer N times"... It would be insanely slow, and it would depend on the actual values strongly... Multiplication in binary is done in a different way, using binary shifts, and it is awesome... Hint: Shifting binary numbers left one bit is equivalent to multiplying by 2... Research...
@tuxino
@tuxino 9 жыл бұрын
Илья Найдов I'm pretty sure Scott knows that. Problem (or challenge) is that the TIS-100 does not use binary and has no shift operation.
@ratchet1freak
@ratchet1freak 9 жыл бұрын
Ole Hansen if you add something to itself that is multiplying by 2, add the result of that with itself you have multiplied by 4, Essentially you would use binary exponentiation using multiplication then you just need a divide by 2 and a is odd/even test
@eliotcougar
@eliotcougar 9 жыл бұрын
ratchetfreak Might work in TIS-100... It would probably require a lot of code on multiple blocks...
@ratchet1freak
@ratchet1freak 9 жыл бұрын
which is kinda the point of TIS, no?
@unfathomablej
@unfathomablej 9 жыл бұрын
Илья Найдов MULU is all well and good, but have you seen DIVU? It's crazy!
@BlitztheDragon
@BlitztheDragon 9 жыл бұрын
I briefly put this on my wishlist. Then I actually watched the video and took it right off. All this went over my head. x.=.x
@TheNightquaker
@TheNightquaker 6 жыл бұрын
I just love the way Scott says "You see?" after he does something here.
@zengrath
@zengrath 9 жыл бұрын
I actually find this very interesting. i love games like this. But i can see why most probably wouldn't agree with me. There was an old hacker indie game a while back which although wasn't 100% realistic is was realistic enough to be very boring to some people but interesting to me and i got a kick out of playing it. I would very much enjoy this too just for fun of figuring it all out, and doesn't look that hard at all. But i doubt this is a 100% accurate representation of how actual computer instructions work.
@Desmaad
@Desmaad 6 жыл бұрын
Was it Uplink?
@jarg7
@jarg7 4 жыл бұрын
What type of person is this game fun to is the real question
@ShredST
@ShredST 4 жыл бұрын
A certain subset of programmers.
@PoeLemic
@PoeLemic 7 жыл бұрын
Lovely game. Bought it on a prior sale. Haven't played yet, but you are talking me into it.
@updownbanana
@updownbanana 9 жыл бұрын
So it's SpaceChem but with programming. Love it. I've only played the demo of SpaceChem but I was still impressed.
@VenseyNess
@VenseyNess 9 жыл бұрын
Wait... I was going to comment something productive and good to society, but then I saw the only comment was from scott. ...what was I gonna say? It doesn't matter. FIRST.
@AvtarRekhi
@AvtarRekhi 9 жыл бұрын
I think the fact that I just finished an engineering degree shows - before I realised, I was completely fascinated by this.
@Komodojou
@Komodojou 9 жыл бұрын
This seems really interesting actually. Thanks for the video, Scott!
@8uurag
@8uurag 9 жыл бұрын
Does it have segfaults? I really don't like segfaults :P
@scottmanley
@scottmanley 9 жыл бұрын
8uurg No the only real failures are Deadlocks and bad output data.
@peteroleary8566
@peteroleary8566 9 жыл бұрын
8uurg #include int main() { int *soIHearYouLikeSegfaults = NULL; *soIHearYouLikeSegfaults = 1; } #cmasterrace
@scottmanley
@scottmanley 9 жыл бұрын
peter O'Leary with code like that I can tell you're not a C coder. Good thing.
@viesturssilins858
@viesturssilins858 9 жыл бұрын
Scott Manley Excuse me, but what is wrong with C coders? I am an embedded C programer and I rather like it, thank you very much!
@scottmanley
@scottmanley 9 жыл бұрын
Viesturs Siliņš I'm a C coder too, and the code is designed to cause a segfault (and mock C coders).
@Bladavia
@Bladavia 9 жыл бұрын
This... Is... EXACTLY WHAT I NEED ! Thanks for sharing this game
@lucylawmore5688
@lucylawmore5688 9 жыл бұрын
Brings me back to the early 80s when we, engineers, would challenge each other to do a task in the least amount of bytes. We were using machine code not asm to do it.
@RayMullins
@RayMullins 9 жыл бұрын
Very cool. Of course no one has discussed the best assembler, IBM's z/Architecture assembler. :P Just kidding - I've done assembler on 8080/Z80 (including Z80 simulation macros in the DR MASM), 6800, Prime, Honeywell Series 6000...and some of those funky x86 stuff, too.) I have no time for games, but I may have to make time for this one. Excellent video, Scott!
@waynewestlake5924
@waynewestlake5924 9 жыл бұрын
This is just what I needed to get started with the game!
@jsimonss
@jsimonss 9 жыл бұрын
Didn't see anybody mention this but there is a similar computer/chip. Made by a company called Greenarrays. Newer versions contain 144 compute nodes with 64 18-bit words, two stacks, and two registers. Programmed using a FORTH variant. Some nice features like executing code from io-ports, each word is 4 instructions.
@krawutzimon
@krawutzimon 9 жыл бұрын
Jesse Simonsson yeah, just found out about that one yesterday, seems pretty amazing!
@kse3
@kse3 9 жыл бұрын
4:16 Your mention of some early computers not having ADD reminded me of this: en.wikipedia.org/wiki/One_instruction_set_computer
@HarhaMedia
@HarhaMedia 9 жыл бұрын
That's a pretty cool game idea! I've been learning / doing some assembly programming on the Commodore 64 for a while now (Interested in how those cool demo effects are made) so I'll definitely try this as well.
@IsCoolGuy
@IsCoolGuy 8 жыл бұрын
solved by carefully timing the cycles then I saw your video ...ahhhwhwhs, adding them together seems so clever now
@s.sradon9782
@s.sradon9782 3 ай бұрын
Gotta admit the graphics are beautiful, there's just something that really appeals to me about that minimalistic monochrome.
@MaxiTB
@MaxiTB 9 жыл бұрын
All the fun of coding assembly language ? You haven't done that past 8086, right ? And even that chip was a mess compared to a superior 680xx. :-)
@scottmanley
@scottmanley 9 жыл бұрын
MaxiTB I learned on z80 (which is practically x86) then spent most of my time coding 68000. It came in extremely useful when I began reverse engineering DRM systems and writing buffer overflows.
@MaxiTB
@MaxiTB 9 жыл бұрын
Scott Manley Ha, yeah, then you know the pain switching back to a x86 architecture - I missed those 32bit registers and plenty of addressing operations so much :) Personally I started out with the 6510, I'm mostly a Commodore kiddy ;)
@scottmanley
@scottmanley 9 жыл бұрын
MaxiTB Well when I returned to x86 the registers were 32 bit. But I did miss having lots of them to work with.
@CuzicanAerospace
@CuzicanAerospace 9 жыл бұрын
MaxiTB Even the 6809 was better than the 8086. Yes. I know. I'm admitting I used to write assembly code on a Tandy CoCo. Must you judge? :)
@MaxiTB
@MaxiTB 9 жыл бұрын
Cuzican Aerospace Yes, because internetz :p
@RoySchl
@RoySchl 9 жыл бұрын
i loved the old inline assembler in turbo pascal ever since i accomplished to write a formely very slow interpolation routine in that and it was sooooo much faster, i could not believe it. and that was probably badly coded assembler. doing that makes you realise how terribly inefficient compilers must be (well at least that turbo pascal compiler) to make such a big difference.
@waterlubber
@waterlubber 8 жыл бұрын
5:33 Hey, look, Elite Dangerous!
@TheNagiri
@TheNagiri 9 жыл бұрын
I don't know if i'm tired or something but my brain had seriously hard time convincing itself that this wasn't kerbal space program
@capnthepeafarmer
@capnthepeafarmer 8 жыл бұрын
I love this game, even though I'm not good at it
@P3Tankman
@P3Tankman 9 жыл бұрын
This reminds me why I stopped learning any code whatsoever...
@GivenFailure
@GivenFailure 9 жыл бұрын
***** What? You can code in a higher level...
@P3Tankman
@P3Tankman 9 жыл бұрын
P3dotme No no, just code in general. "A to B to C to do D...What was A again? In fact what did this entire block of code do in the first place?!"
@P3Tankman
@P3Tankman 9 жыл бұрын
***** I did that, I spent more time writing comment lines then code :( At least if I coded something it would be well documented...
@storerestore
@storerestore 9 жыл бұрын
***** Your blocks of code should be named, possibly typed, and documented in such a way that their intended use is obvious. Of course you don't know what "A" was, but a less abstract name might be able to remind you. Proper names can mean the difference between an unreadable mess and a simple solution.
@Sawta
@Sawta 9 жыл бұрын
***** It sounds like you might not have been breaking your code blocks up to be as simplistic as possible. Another good skill to have, aside from good commenting and breaking up code blocks as much as possible, is learning to name variables with *extremely* obvious names. Even if it takes longer to type. Most IDEs have auto-complete, and the extra kilobyte or two extra it might take up is going to be largely irrelevant by modern standards. If you still have any interest in coding but are nervous about jumping back in head first, I would *highly* recommend checking out Clean Code by Robert C. Martin. It's a great book that helps you think about good coding practices and concepts, and less on the actual coding itself. I'm working my way through The C Programming Language (2nd Edition) by Kernighan/Ritchie right now, and it also seems to break things down easily enough to get a good basis of "how" coding should be performed, rather then just *what* to code to get it to run. It might be a little bit more intensive, but if you've got a few bucks to spare buying a used copy might be worth the investment if you want to give programming another try. Often times the design and layout of a program can be as, if not more time-intensive then actually writing the code itself. If you have problems keeping track of what something does, or why something else needs to do something different, then it is an indicator that you need to think and plan out your program in greater detail. It's boring, but it's true. There will always be areas of a program that you didn't account for, but for the most part, you should generally have a good idea of where you are and where you're trying to go. Solid planning can help fight a lot of the problems that you mentioned. Don't lose hope! :)
@coolsebz
@coolsebz 9 жыл бұрын
YES! Oh man i was just wondering if you are going to do a video on it! Wohooo, today was a good day! :D
@wesofx8148
@wesofx8148 9 жыл бұрын
I'm so happy programming is becoming so popular.
@kalinmir
@kalinmir 9 жыл бұрын
you are bringing back nightmares from the high school!
@Ichinin
@Ichinin 9 жыл бұрын
Have you seen Ascent - The Space Game? Like Eve but more colony building, building domes, rectors, exploration, hiring colonists, EVA, taking soil samples, finding resources, hiring NPC pilots to trade betwen colonies (etc)
@Alienasa1
@Alienasa1 9 жыл бұрын
Thanks for teaching me that I don't know the first thing about coding.
@VisDeux
@VisDeux 9 жыл бұрын
Thanks for letting us know Scott, I now know what I'm going to play for some time :)
@davidmartin2626
@davidmartin2626 9 жыл бұрын
LOL, luckily I still get to occasionally code ASM, just not as often as I would like.
@TheRealPentigan
@TheRealPentigan 9 жыл бұрын
I'm looking at these story nodes and I'm wondering that maybe there's something more to them, especially the ones that still have input connections to the rest of the board. Unfortunately I don't think regular nodes can directly push their ACC values into other nodes. Would be interesting if you could obtain even more story by passing them specific values during the level.
@scottmanley
@scottmanley 9 жыл бұрын
TheRealPentigan MOV ACC,
@ScripturusEU
@ScripturusEU 9 жыл бұрын
Any chance of a longer Let's Play video/series of this, Scott? I have only the faintest idea what's going on, but the concept is fascinating.
@CZ350tuner
@CZ350tuner 9 жыл бұрын
Obviously a game aimed at electronics engineer and old school gods of programming. Way above the abilities and knowledge of an IT engineer..... If electronics engineers want a laugh they ask an IT engineer to attempt to explain how they believe a Intel quad core processor works..... My first computer, in 1977, only programmed in Signetics 2650 assembler. To me assembly language on ant processor is second nature.
@bakuganlego
@bakuganlego 9 жыл бұрын
The command nodes in this game look remarkably like an FPGA
@NeonDripKitty
@NeonDripKitty 9 жыл бұрын
So any one know if this could be used to learn the basics of how code works? Like can the methods used in this be used in c++ or lua as is the code set up not word to word, that mit of made no sense.
@NeonDripKitty
@NeonDripKitty 9 жыл бұрын
+Jimpi27 Thank you for the reply kind sir.
@RFC3514
@RFC3514 9 жыл бұрын
+dazdroid1995 - Some programming concepts (like conditional jumps, etc.) apply to any language, but trying to learn them through something like this is bordering on masochism. It's probably a fun way to learn about how CPUs work, though (like Jimpi27 mentioned), if you're interested in the hardware side of things. The easiest way to start learning high-level programming these days is probably to play around with ECMAScript (a.k.a. JavaScript), since everyone has easy access to an interpreter (i.e., any modern web browser), and there are tons of examples online. With HTML5 you can even use it to make pretty advanced stuff (animation, etc.) with bearable performance. And since the syntax is pretty similar to Java / C / etc., you can apply what you learned almost directly to those languages, if you ever need more performance.
@rikschaaf
@rikschaaf 9 жыл бұрын
Nice game, will be certainly added to my wishlist on steam
@y337
@y337 9 жыл бұрын
Scott if you could just clear up this one thing that's bugging my mind. Let's give you a condition that does exist in that scenario: Three consecutive 1's pumped into a single input. (Let's say our first 1 is currently in the ACC) The first line (within the start function) tests if the ACC number is not zero, which is true in this case, so it executes the SET function which is defined below to pump the next number into the ACC (which is our second 1 of this scenario), and notice how Scott removed the: JMP START where this function is defined, so the code does not reset, and we move on to the next line. The next line pumps the next number into the ACC (which is the third 1 of this scenario), and we move on to the next line. The next line tests if the ACC number is 0, and it isn't, so nothing happens on this line and we move on to the next line. The next line pushes the input number down below into the next box, and this should only happen if the previous number in the ACC was a 0. The next line resets this whole process. That's what I don't get: by this codes logic, three consecutive 1's pumped into a single input should activate that condition, and cause Scott's code to fail that scenario, but we see in the video that his code ends up working perfectly. How?!?!?!?
@TOASTEngineer
@TOASTEngineer 9 жыл бұрын
BurrowMonster Scottish computer wizardry
@Yugge
@Yugge 9 жыл бұрын
BurrowMonster It never pushes the input number into the next box, it pushes the number 0 into the next block. To push the ACC into the next block it would have to be MOV ACC, DOWN. So (I assume a 1 before first input, so we start at the top): 1 IN ACC ACC is not zero, jump to SET MOVE IN to ACC (Second 1) MOVE 0 DOWN (Signal no change) (wrap around to start) ACC is not zero, jump to SET MOVE IN TO ACC (Third 1) MOVE 0 DOWN (Signal no change) (wrap around to start) ACC is not zero, jump to SET MOVE IN TO ACC (out of scope, but say it is a zero) MOVE 0 DOWN (Signal no change) (wrap around to start) ACC is zero, do not jump MOVE IN TO ACC (out of scope, say another zero) ACC is zero, jump to ZERO MOVE 0 DOWN (Signal no change) (wrap around to start) ACC is still zero, do not jump MOV IN TO ACC (A 1!) ACC is zero, do not jump MOV 1 DOWN (Signal change!) jump to START IN OUT during this example (just the top-left node): 1 - (Depends on if there is a 0 or 1 before the example starts) 1 0 1 0 0 0 0 0 1 1
@Yugge
@Yugge 9 жыл бұрын
Yugge If you buy push input number meant the actual number of the input port (1,2,3,4), then yes, this is done, but only if there is a sequency of 0 followed by a 1 :) That is the MOV 1 DOWN command
@prokhorzakharov4150
@prokhorzakharov4150 9 жыл бұрын
BurrowMonster "SET:" is not a definition of a function, it's a label. What you called an execution of SET is actually just a jump to the line after "SET:". The key difference is that when MOV UP, ACC is executed, the program doesn't go back to where the jump to "SET:" occured, it just goes on to the next line.
@DamianReloaded
@DamianReloaded 9 жыл бұрын
This looks really really interesting. What a great idea.
@tefras14
@tefras14 9 жыл бұрын
Finally something i can understand!
@Yotanido
@Yotanido 9 жыл бұрын
I usually prefer really high level languages. Heck, my favourite language is Haskell, but I also like assembly. Maybe I'm weird, but I will definitely get this - looks awesome.
@indjev99
@indjev99 9 жыл бұрын
Yndostrui Why would one prefer really high level languages? I understand why most people wouldn't prefer assembler, but anything higher than C++ is annoying.
@Yotanido
@Yotanido 9 жыл бұрын
indjev99 Why would one not prefer high level languages? C++ is rather high already, actually. It adds objects and abstract objects. It also has garbage collection, although you need to enable it manually. Haskell takes it a bit further still, you can pass functions around, partially apply functions, map functions over lists, etc. It makes for very concise programs. Take this function that calculates the factorial, for example: fac n = product [1..n] It is concise and it makes clear what the function actually does. Compare this to a similar C++ function. Even a skilled programmer will have to look at the code for a moment to understand what it does, if they don't expect a factorial function already.
@indjev99
@indjev99 9 жыл бұрын
Yndostrui Yes, C++ is still a high level language. But when I'm reading a factorial function in C++ I know exactly how everything works. When you're reading this: product [1..n], do you know exactly what sequence of operations is preformed to get the result? And BTW if you name your functions properly everyone would expect a factorial function when he is reading one.
@Yotanido
@Yotanido 9 жыл бұрын
indjev99 For individual functions, the name will do, yes. But if you have a complex function and need to understand it (maybe it has a bug), this can cause quite some issues. I can actually figure out what the computer really does with that line(with debug options), but do I need to? There is no reason for me to understand every bit that gets set, it is way more effective to look at a program on a high level rather than shifting bits around... The whole point of higher-level languages (including C and C++) is to stop doing that and get an easier way of looking at things. And do you know which registers the processor is going to occupy, which memory regions it will temporarily seize, the exact instructions it executes? You can figure it out if you really wanted to, but there is no need. The only reason why you'd ever want to know what it does exactly is when doing micro-optimisations, that's why these tools exist, but it is rather uncommon use case.
@Markus9705
@Markus9705 9 жыл бұрын
Yndostrui Try Brainf-ck. Only eight(!) instructions.
@JohnyPhate
@JohnyPhate 9 жыл бұрын
Looks pretty good. I'm gonna try it when I get back from Skellige...
@Nightlurk
@Nightlurk 9 жыл бұрын
Finishing this game should be mandatory homework in computer science class for kids!
@Markus9705
@Markus9705 9 жыл бұрын
Just one question, only: why are you running Chrome, Firefox *and* IE?
@krawutzimon
@krawutzimon 9 жыл бұрын
TheLeftLibertarianAtheist maybe to crosscheck rendering compatibility of websites between different engines?something in HTML5? probably related to streaming? ;)
@Markus9705
@Markus9705 9 жыл бұрын
krawutzimon One should simply don't care about IE. IE and M$ is the worse ever that happened to the Internet. Fuck all of it. :D
@LockDCS
@LockDCS 9 жыл бұрын
I want this to be a mini game in Star Citizen
@TomaszWota
@TomaszWota 9 жыл бұрын
+LockAC04 Holy shit yes xD
@Zyk0tiK
@Zyk0tiK 8 жыл бұрын
Scott, long time since you made this video but is that right about computer didn't have ADD? I think it's that they didn't have SUB, because you'd use 2's Compliment on one number in binary and add it to the other to get the subtracted value.
@scottmanley
@scottmanley 8 жыл бұрын
That's easy for you to say, harder for you to build the hardware that does it. en.wikipedia.org/wiki/Manchester_Small-Scale_Experimental_Machine#Programming
@Zyk0tiK
@Zyk0tiK 8 жыл бұрын
That's awesome man! With the limited instruction set (and memory) it made more sense to load a negative X and sub Y than load X and add a negative Y due to the fact they'd need somewhere else to store negative Y before the addition. Thanks for putting me on the right train of thought :)
@Zyk0tiK
@Zyk0tiK 7 жыл бұрын
Aethenthebored you subtract numbers in binary by inverting the number (0s become 1s, etc.) and applying 2s compliment. When you add them together it gives you the subtraction.
@zubinarya5564
@zubinarya5564 9 жыл бұрын
this game looks awesome having already learned mips in computer architecture cource
@WhirligigGirl
@WhirligigGirl 9 жыл бұрын
Back before manic episodes and other sad things, my father was fabled to have been able to program in the assembly and even machine code. He was a bit famous at the time, 80s I think. Charles Brannon. You may have heard and then forgot the name.
@cocosloan3748
@cocosloan3748 7 жыл бұрын
I definitely could have used this when i was working in assembly programming on Commodore 64 somewhere arround 1990... I had a private service for computer repair and then Commodore 64 was allmost top of class(except Amiga was there on top)
@Slovflyer
@Slovflyer 8 жыл бұрын
so... who remembers At-Robots from the 90s, coding little triangular tanks to battles each other on a 1 square km map using an assembly like language? opo 15, 1.
@nosouponhead
@nosouponhead 5 жыл бұрын
I think you meant that early computers only had ADD and not subtract.
@gabeteuton
@gabeteuton 9 жыл бұрын
OMG, i didn't understand two thirds of what he was saying... though i can't help to be attracted to the topic (as well as the game), though i'm a complete ignorant of its contents! Nice video!
@trgdy15
@trgdy15 8 жыл бұрын
I want this game so bad but I feel like I'm too dumb to be able to enjoy it. :(
@PiousSlayer
@PiousSlayer 8 жыл бұрын
Humle Monthly. o:
@BlackSeranna
@BlackSeranna 8 жыл бұрын
It's on STEAM for $6.99.
@alexanderbrooksify
@alexanderbrooksify 9 жыл бұрын
Hmm. Hmm! I know some of these words!
@cantcode1001
@cantcode1001 7 жыл бұрын
ok on the interrupt handler, 2nd output is supposed to be "1", and the inputs were "1,0,0,0", lines 6 and 7, same input "1,0,0,0" but the output is "0". I'm deeply confused about this discrepancy.
@headcrab4
@headcrab4 9 жыл бұрын
God dammit Zachtronics, let me finish Infinifactory first!
@hankscorpiouk
@hankscorpiouk 6 жыл бұрын
We need a C++ game now 8)
@thepun3721
@thepun3721 6 жыл бұрын
lets flood their forums on zach with this lol i can only hope
@brendenbradach
@brendenbradach 9 жыл бұрын
This would have been amazing to understand a bit of programing for older micro controllers. The 8051 comes to mind that they still teach about.
@brendenbradach
@brendenbradach 9 жыл бұрын
*****The Input handler is using gray code. Its a input code that never changes more then one bit at a time.
@brendenbradach
@brendenbradach 9 жыл бұрын
I am just saying as someone that has done projects with both the ASM current micro and current gen of python based and C+ based micros. I could be half asleep and write code for that latter 2 and have to be fully awake to work on ASM. Its just not my thing.
@3263927
@3263927 5 жыл бұрын
love these guys
@Halo1138
@Halo1138 9 жыл бұрын
I wonder if this game goes a long way in teaching people about coding. I tried learning it but it didn't quite turn out. I am strangely interested in this game though.
@donatoaz
@donatoaz 5 жыл бұрын
Came for the game, stayed for the accent
@colewalton2167
@colewalton2167 7 жыл бұрын
At 6:23 u could have used mov any down in the 7th node
@maridan238
@maridan238 9 жыл бұрын
That is breaking my head, but it's interesting though. * oh it hurts so much* :D
An Engineer Ranks All The ZACHTRONICS Game
32:08
DoshDoshington
Рет қаралды 340 М.
Sega Game Coding in Assembly - Computerphile
11:13
Computerphile
Рет қаралды 328 М.
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
They turned chemistry into a puzzle game...
22:16
Real Civil Engineer
Рет қаралды 500 М.
Reverse Engineering Game Code from the Neutral Zone
40:59
Retro Game Mechanics Explained
Рет қаралды 700 М.
Writing NES Games! With Assembly!!
11:40
Coding Tech
Рет қаралды 634 М.
TIS-100 Review
12:25
Matthewmatosis
Рет қаралды 89 М.
Shenzhen I/O - Building Cheap Chinese Electronic Gizmos
17:31
Scott Manley
Рет қаралды 366 М.
TIS-100 Levels 1-5 Walkthrough
16:54
Danny Crane
Рет қаралды 55 М.
The Game NO ONE Can Beat - Where's Waldo (NES)
25:55
Grand POOBear
Рет қаралды 214 М.
Recommending Zachtronics
18:31
Matthewmatosis
Рет қаралды 134 М.
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН