Bisqwit’s first reaction to: TIS-100, the assembler coding game

Поделиться
HTML-код
  • Опубликовано: 22 окт 2024

Комментарии • 170

  • @sagiksp4979
    @sagiksp4979 7 лет назад +138

    You HAVE to play Shenzhen I/O. It's by the same guy, basically a better, more challenging version of TIS-100. You can place individual parts/chips, assembler is more powerful and it even has Puzzle API and Steam Workshop support.

    • @Bisqwit
      @Bisqwit  7 лет назад +40

      I don't have that game. Thanks for the recommendation though.

    • @reav3rtm
      @reav3rtm 7 лет назад +14

      Shenzhen I/O provides more abstraction. This game resembles real coding too much imho. To me it looks like it's not much different than running gnu assembler on file edited in vi, perhaps with some simple library for I/O for convenience. Feels more labour than fun imho. If I want labour, I go to work :)

    • @moregirl4585
      @moregirl4585 6 лет назад

      but SHENZHEN I/O is also unrunnable while TIS can

    • @RazorM97
      @RazorM97 6 лет назад

      Biskwit have you tried adding acc twice?

    • @Bisqwit
      @Bisqwit  6 лет назад +2

      Context please

  • @manofgod448
    @manofgod448 8 лет назад +213

    you kinda sound like a male version of glados

    • @pchips6300
      @pchips6300 7 лет назад +17

      Enderhead I watch this for the ASMR

    • @ETXAlienRobot201
      @ETXAlienRobot201 6 лет назад +17

      i don't think it was intended in any offensive matter....
      but yeah, he kinda does.
      didn't think about that before now though

    • @miguelbrandao8333
      @miguelbrandao8333 5 лет назад +3

      @@ETXAlienRobot201 I'd say sounding like a male version of glados is a 5/7 compliment

  • @Howard2k79
    @Howard2k79 5 лет назад +16

    Thats the kind of let's play is would like to see more often

  • @programagor
    @programagor 5 лет назад +6

    As someone who played this for hundreds of hours, it was awesome watching you figure it out from scratch :D

    • @Bisqwit
      @Bisqwit  5 лет назад +2

      Yeah, a bit too slow progress though! But I have played it lots afterwards and done plenty of optimization.

  • @postvideo97
    @postvideo97 8 лет назад +4

    Man I loved this game! Great video, you actually always made the solution using the less nodes. Usually those who uses less cycles use the most nodes as possible, in order to parallelize their program.

    • @Bisqwit
      @Bisqwit  8 лет назад +2

      Yeah, I learned the parallelization trick later. Because it involves repetition I left it mostly out from the video.

  • @domdunc
    @domdunc 8 лет назад +3

    i just got this in the steam sale, can't wait to play it now.

  • @schinsky6833
    @schinsky6833 3 года назад

    When I listen to your voice I think of Bela Lugosi. To me, this video is Bela Lugosi playing T-100, which is kind of awesome.

  • @rulojuka
    @rulojuka 4 года назад +1

    I think you just kinda discovered the shortcut to move between nodes by accident at 50:53!

    • @Bisqwit
      @Bisqwit  4 года назад

      Indeed! That’s how many discoveries happen…

  • @Maldito011316
    @Maldito011316 7 лет назад

    You're a beast! :D Please play more Zachtronics' games!

  • @chewie481
    @chewie481 8 лет назад +1

    omg looking forward to watching this.

  • @taggamingmc4230
    @taggamingmc4230 8 лет назад +7

    I love the theme you are going with: "indie games". I am a big fan of indie games

  • @GodofWar1515
    @GodofWar1515 5 лет назад +3

    Hey Bisqwit. Long time now text! How's it going? I bought this game for the IOS. A great game that makes you think about how ASM works. I'll have to go back and play it again.

  • @hene193
    @hene193 8 лет назад

    I really liked this video! Are you planning to make more of these? I would be interested in seeing more of you playing this game.

    • @Bisqwit
      @Bisqwit  8 лет назад

      Thanks. No, I don't think I'll make another TIS-100 video. I mean, the later puzzles in this game are quite difficult, but: For instance, I have been struggling with the "sequence sorter" puzzle for many hours now, and I still haven't solved it. I know the algorithm to it, but the cells are not big enough. I would imagine that a four-hour video, in which I don't even solve the puzzle, would get a bit boring to watch. And if I were to create a video that only features my best solutions so far, it would be kind of pointless because none of my solutions are world records (sometimes not even close).

    • @hene193
      @hene193 8 лет назад

      Okay I totally understand. Maybe the solutions would be nice to see. I mean it's interesting to see how you solved the puzzle even if it's not the best one out there. And you are good at explaining what you did. Maybe someone would learn a trick or two. Anyways thanks for letting me know. It's admirable how you find the time to respond to the audience!
      (I don't know why I wrote this in English since I'm Finnish too...)

    • @Bisqwit
      @Bisqwit  8 лет назад

      On behalf of people who can't read Finnish, thank you for writing in English. Other people enjoy reading comments too!

    • @hene193
      @hene193 8 лет назад

      Bisqwit Oh right yes that.

  • @EmptyGroceryBag
    @EmptyGroceryBag 5 лет назад

    Great video! This game looks fascinating, I might have to get it some day. Correct me if I'm wrong, but in the Signal Comparator program, you could've simply wrote 1 to OUT.L instead of moving the value and then performing all those calculations in the OUT.L node. The only way a number could end up in OUT.L is if it isn't greater than or equal to zero.

    • @Bisqwit
      @Bisqwit  5 лет назад

      Firstly, thanks for the attentive watch!
      However, there are two problems with your suggestion. First, the machine must produce an output in all three nodes _for each_ input. In other words, even if the output is 0, it must output that 0. Secondly, even if you know the output in advance, you must still read the input for synchronization and to prevent the node which writes to you from blocking. The solution that I showed in this stream (my blind play, first experience ever about this game) is the shortest possible solution to that puzzle - well, at least from anyone in my Steam friends list.
      You can also see my 230-cycle version here - it is faster than anyone else’s solution on my Steam friends list. i.imgur.com/GCURQni.png (fastest of my friends’ is 253 cycles).

  • @ricardo.mazeto
    @ricardo.mazeto 8 лет назад +4

    Aha! Now we're talking!
    That game is so you, Bisqwit!
    I missed a little introduction of the game, I had to google and read the manual to understand the overall GUI, why there's multiples frames, that MOV RIGHT, LEFT is moving data from one of these "modules" to another; And a overview on the instruction set. And for me it was hard to keep up, because you don't speak while you type, the thoughts you're going through, and I can't know what you're planning to do just by looking at your code. Nonetheless, that was a very nice review.
    I dunno 'bout you but this game got me thinking on CPU architecture design.
    81 megs? This game could be written in less than 1.44mb if it was written with ncurses and CDK.
    Off-topic question, Bisqwit:
    What do you think about functional programming?

    • @Bisqwit
      @Bisqwit  8 лет назад +2

      Thanks for the feedback. Yeah, you are right the game could be so much smaller. That's the price of doing things with Unity.
      Sorry about not thinking aloud enough. I tried to be as transparent as possible.
      I think functional programming is fascinating; the difference between imperative and functional programming is very similar to difference between particle-heavy languages and agglutinative languages. As a speaker of Fenno-Ugric languages (which are agglutinative) you can see where I come from. In imperative programming and in particle-heavy languages like English and Chinese, you do many small things to accomplish something. In functional programming and in agglutinative languages, a single long expression accomplishes a lot. Unfortunately in terms of computer programming, functional programming often carries an overhead with things like allocating and replacing dynamic data structures.

  • @li82576
    @li82576 3 года назад

    what desktop environment are you using in this video? and what's the name of that blue window theme? i really liked it

  • @DoomRater
    @DoomRater 5 лет назад

    10:00 Missing parallel processing opportunities. Since each cell is doing work at the same time a step is taken, we can send the value to two different cells and then they can combine the value in perfect time later on down the road so it completes faster. I am of course commenting as I watch, so I don't know if you figured this out later in the playthrough yet.

    • @Bisqwit
      @Bisqwit  5 лет назад

      This was just my first 30 minutes of playing the game. To date I have played this game for 95 hours according to Steam (although I’m not sure where the last 15 hours comes from; I usually just hop in quickly to check if there is a change on the leaderboards), and rest assured I currently have the top score in all categories in all 51 puzzles compared to my friends list (except for the two items listed in the video description).

  • @Apollyion
    @Apollyion 5 лет назад

    Hello! I'm learning assembly so excuse me if I'm wrong or if what I say doesn't make any sense. At 10:44 the task is to read A, double it and write it to OUT.A.
    Instead of doubling the value with "ADD ACC" (if that's what makes it double, your cheat sheet says so? ADD src (ADD+=src)), couldn't you double it with simple use of shifting left since one left shift doubles the number? Shifting takes only one cycle and is directly supported by ALU, so that should make it do it in less cycles for each number, maybe? I don't own the game, but it was something I was wondering about.

    • @Bisqwit
      @Bisqwit  5 лет назад

      This game does not have a left-shift instruction.

    • @Apollyion
      @Apollyion 5 лет назад

      @@Bisqwit Ah i see. That's funny, it's a very basic function. One might think it's present in every CPU. Oh well. Thanks for response!

    • @Bisqwit
      @Bisqwit  5 лет назад

      Practical CPUs, yes. This one is… different!

  • @multicoloredwiz
    @multicoloredwiz 8 лет назад +7

    TIS-100 emulator video when ? :P ahh, though i guess you have to model the nodes too

    • @Bisqwit
      @Bisqwit  8 лет назад +5

      Yeah, there would be some UI issues to consider, since it's a pure data processor.

  • @BradenBest
    @BradenBest 6 лет назад

    This is the solution I came up with for Sequence Generator (31:00) while watching:
    It took me about 5 minutes and 2 pieces of paper.
    A B
    [1] [2]
    [3] [4]
    [5]
    O
    1:
    START:
    MOV UP, ACC
    SAV
    SUB RIGHT
    JGZ REVERSE
    MOV BAK, DOWN
    MOV RIGHT, DOWN
    JMP START
    REVERSE:
    MOV RIGHT, DOWN
    MOV BAK, DOWN
    2:
    MOV UP, ACC
    MOV ACC, LEFT
    MOV ACC, LEFT
    3:
    MOV UP, RIGHT
    4:
    MOV LEFT, DOWN
    5:
    MOV UP, DOWN
    MOV UP, DOWN
    MOV 0, DOWN
    No idea if it works, can't test it without owning the game.
    Assumptions:
    1. ACC isn't cleared after MOV ACC, XXX
    2. SAV doesn't clear ACC, resulting in a dupe
    3. BAK can be used as a register (otherwise just add a SWP and change BAK to ACC)
    4. You can MOV integer literals like 0
    I see no reason why any of them should be false.
    Logic:
    (axiom: If A > B, then A - B > 0)
    I start by moving UP to accumulator and duplicating it. B is then subtracted from accumulator and the value is checked. If it's greater than zero, then A>B, so we write the backed up A value and B's value in reverse (B,A), otherwise they're written normal (A,B). The case of ACC == 0 isn't considered, since the order doesn't matter when A == B, so it's thrown in with the default.
    On B's side, it copies the input value to ACC and spits it out at A twice. The first is used to calculate the order, and the second is used so the program knows what to write.
    From there, the output is piped along until the final node, where the input is written twice and a NUL is written. A nice and simple separation-of-responsibilities solution, as the first two nodes don't have to care about writing a NUL. They only need concern themselves with figuring out what order to send their input in. The NUL is handled by the last stop, which is guaranteed to always write

    • @Bisqwit
      @Bisqwit  6 лет назад +1

      "MOV BAK, DOWN" is not a valid instruction. You cannot refer to BAK directly, you have to use SWP to swap ACC and BAK first.
      Other than that, your solution seems right (assuming there is not a trivial polarity mistake). Your three assumptions are correct.
      EDIT: With the SWP instructions added your box 1 would exceed the number of allowed lines IIRC. You would have to put labels on the same line as the instruction that follows it.

    • @BradenBest
      @BradenBest 6 лет назад

      Ah. And I gather the three assumptions exclude the one about bak (I edited that in). Anyways, great video! It was both fun and frustrating to watch. I will definitely get this game the next time it's on sale.

    • @BradenBest
      @BradenBest 6 лет назад

      "I'm a bit slow to start sometimes" (seen in the notification bell but not appearing in thread, assumed deleted)
      Aaand I take it you must have seen the thing about the video being frustrating right before I deleted it. Nah, you're cool, man. I didn't mean it that way. I meant it in the way that it's frustrating to watch someone else do a puzzle. It was meant to be a light jab, but I thought it would be taken the wrong way, so I deleted it.

    • @Bisqwit
      @Bisqwit  6 лет назад

      Yeah, I saw you deleted your comment so I deleted my reply as well.

    • @BradenBest
      @BradenBest 2 года назад +1

      I got into this game this year and I'm up to the last four puzzles in the first page (based on my keen gamer sense™ and the achievement descriptions, there's a whole nother page called "TIS-net" which is full of even harder-er puzzles that require even more psychopathic and deranged solutions to complete than what I have been doing). My favorite puzzle so far is the histogram one. JRO is love. JRO is life.

  • @EnderCrypt
    @EnderCrypt 5 лет назад

    oh i love this

  • @Bisqwit
    @Bisqwit  8 лет назад +1

    If you haven't seen Manufactoria yet, check it out: pleasingfungus.com/Manufactoria/ (Flash required)
    TIS-100 reminds me a lot of it. In Manufactoria however, the programming is done graphically, not by typing. The principle is still the same!

    • @Bisqwit
      @Bisqwit  8 лет назад

      I was actually given Spacechem a while ago, so I might make a video of that too. No promises :)

    • @joshodom9046
      @joshodom9046 8 лет назад

      Bisqwit, you should try manufactoid, it's basically spacechem + lua
      thesiteformerlyknownas.zachtronicsindustries.com/manufactoid/

  • @skyrym3481
    @skyrym3481 8 лет назад +1

    Hello bisqwit. I was wondering since the day i saw your joe editor. How do you make your editor syntax highlighting work. thx

    • @Bisqwit
      @Bisqwit  8 лет назад +4

      Joe is not my editor though! I did make an editor that runs in DOS (and only in DOS) that is somewhat based on ideas from Joe. Which is based from ideas WordStar.
      The syntax highlighting is based on a state-machine. It is pretty self-evident when you study the syntax highlighting files of Joe. Just download Joe (joe-editor.sourceforge.net/) and study the JSF files. They are very simple state machines. Coloring the file is just a matter of following through with the state machine. You read a character from the file, and depending on which character this is (using the lookup table in the current state), you choose a new state, and color the character (and possibly a few preceding characters too) according to the color associated with the new state.

    • @skyrym3481
      @skyrym3481 8 лет назад

      Thank you Bisqwit. Is there any chance you can send me your joerc on my email. tnx

    • @skyrym3481
      @skyrym3481 8 лет назад

      We are talking about linux here right bisqwit? Or there is no difference between windows and linux versions of joe. In windows i get my syntax highlighting just fine, Linux version of joe is my problem.

    • @Bisqwit
      @Bisqwit  8 лет назад +3

      I don't have a joerc file, except the one that comes supplied with Joe and installed in /etc/joe.
      I do have a custom ftyperc (mostly for enabling autoindent and disabling wordwrap on a number of filetypes) and a custom set of syntax highlighting files (JSF).
      You can download these jsf files here (well, an older set from 2010): bisqwit.iki.fi/kala/jsffun-update.zip . Also attached is a PHP class file for using JSF files to syntax highlight source code and render in e.g. HTML.

  • @fuj1n
    @fuj1n 7 лет назад

    From what I've noticed with the way you play this game is that you're so experienced that you just don't see the simple solution to the provided problems, that is especially visible in Sequence Generator.

    • @Bisqwit
      @Bisqwit  7 лет назад +3

      Thanks. It took a while to get up to speed in this game, but I now have a pretty good result in most puzzles, including Sequence Generator. I still don’t think Sequence Generator is a simple puzzle though, but of course it is much simpler compared to some of the later ones, where you have to e.g. divide numbers or sort sequences.
      IMO it is quite disappointing to see that everyone on my friend list who tried this game out quit before they even finished the main section, let alone the TIS-NET section. Some of them exhaust all their energy trying to optimize the first few puzzles before they even solve the next ones.

  • @dwggong3132
    @dwggong3132 8 лет назад

    at what age did you start programming(from your website i calculate 14 ), how long does making these projects range from and do you have any advice for struggling programmers and new programmers . P.S thx for replying to comments

    • @Bisqwit
      @Bisqwit  8 лет назад +14

      Yes I began 14 years old without any prior experience of computers. No Internet, no mobile phones. A project may last anything from a couple of minutes to several years, depending on its complexity. My advise in general is don't be afraid to experiment, and aim for things that are just very slightly beyond what you can currently do, and keep being motivated of small advances.

  • @Mimerneos
    @Mimerneos 5 лет назад

    I imagine to lower the cycles of that second program, you could've avoided all the cell moves, and in the last cell wrote mov acc, down (I assume the acc is global to all cells?)

    • @pokeylink5922
      @pokeylink5922 5 лет назад

      Mimerneos i think acc is unique to each cell

    • @Bisqwit
      @Bisqwit  5 лет назад +1

      Yes, each cell is a self-contained machine with their own registers. The only way to transmit values is to explicitly MOV them to one of the neighboring nodes.

  • @milltonmanakeeper53
    @milltonmanakeeper53 8 лет назад

    Do you think 240 cycles 5 nodes and 10 instructions are good for Differantial Converter?

    • @Bisqwit
      @Bisqwit  8 лет назад

      Yes, 240/6/16 was in fact my first good result in that once I started parallelizing. Before that it was something like 393/6/14. I was only later able to get it down to 201/6/12. And the node minimum is 5 and instruction minimum 10, just like yours.

    • @milltonmanakeeper53
      @milltonmanakeeper53 8 лет назад

      +Bisqwit Well I am happy for now as I am pretty new at programming

  • @skyrym3481
    @skyrym3481 8 лет назад

    Another question man. How do you copy and paste in this thing (joe Editor). And how do you find certain word.

    • @Bisqwit
      @Bisqwit  8 лет назад

      Type ctrl-k ctrl-h for on-screen help. It lists all the hotkeys. Esc . and Esc , for next/previous page of the help. Ctrl-k ctrl-h again to close it.

    • @skyrym3481
      @skyrym3481 8 лет назад

      i have seen you copy and paste very quick. but on the help page of joe i can only find block select and then copy, and no paste. What you do on your great videos is very smooth. Is that magic or very quick block select and then copy and then paste :D

    • @Bisqwit
      @Bisqwit  8 лет назад

      Block-select and copy/move is exactly what I do there. Note that there is no "clipboard" in this editor. "Copy" means really duplicating the block into the current cursor location.

  • @Quiloos39
    @Quiloos39 8 лет назад

    Hello Bisqwit can u make video about what is base64 and how to decode base64 image data and get pixel color from it

    • @shady4tv
      @shady4tv 5 лет назад

      No need for a video - that's bloat
      to understand base64 it helps to know what a base is.
      When we count passed nine (9) we add a new number in the next place holder to represent one full run through of all the numbers we call this number ten and is a 1 in front of a 0.
      we call this kind of counting base 10 which means we count to 10 before we add a new placeholder to the prefix.
      in binary we only have 2 numbers (base 2) 1 and 0 so we add a prefix to represent the binary number 2 as 10
      in base16 or hexadecimal we have 16 numbers before we need a placeholder so it looks like 123456789ABCDEF then 16 is 10
      base64 is a counting system that has numbers all the way to 63 before it adds a prefix so 64=10
      since data in computers is represented as binary it helps to abstract away some of the numbers when reading data so we dont have to use as much memory.
      so "2" (any base above 2) is half as much data as "10" (base 2)
      "A" (base16) is half as much data as "10" (base 10)
      and "F"(base 16) is 4 times smaller than "1111" (base 2)
      Images and other binary files can be converted to base64 as the method of representation to conserve data when passing it over the wire.
      Of course a computer can only read a binary payload not base64. So you'll need to convert it back to binary before execution.
      to decode base64 on UNIX-Like machine the base64 util will help with this:
      $ base64 -d file.b64 > file.jpg
      This will create a binary jpg file called "file.jpg" from the base64 data. The "-d" means decode.

  • @enricopassoni1
    @enricopassoni1 6 лет назад

    Can you tell me what distro and gui are you using? thanks

  • @wesofx8148
    @wesofx8148 7 лет назад +1

    Lol, if you can use literals can you just hand-write the output?

    • @Bisqwit
      @Bisqwit  7 лет назад +1

      Yes. Assuming you have enough room in the boxes to produce all that output, and assuming the test has no random-data validation phase.

  • @damar_u0_angki908
    @damar_u0_angki908 8 лет назад

    Can I ask you what the translation of your header for your youtube channel is in english. I do not know hebrew. Just curious.

    • @Bisqwit
      @Bisqwit  8 лет назад +2

      Answered here: ruclips.net/video/oVyx9L3IGfs/видео.htmlh26m7s

    • @damar_u0_angki908
      @damar_u0_angki908 8 лет назад +2

      Bisqwit Thank you, from America. Great channel.

  • @sznio
    @sznio 8 лет назад

    Are you going to do game livestreams?

    • @Bisqwit
      @Bisqwit  8 лет назад +1

      I have done them in twitch. They haven't been very popular.

    • @fys4287
      @fys4287 8 лет назад +2

      Try RUclips streaming, you wouldn't need to work on 2 viewer bases that way.

    • @Bisqwit
      @Bisqwit  8 лет назад

      Thanks. But I'm not a terribly exciting player to watch, in my opinion. People have subscribed to my channel because they love the programming and lessons I do, and I wouldn't like to compromise that too much.

  • @Tesirapa
    @Tesirapa 5 лет назад

    What Linux distro are you using ?

    • @Bisqwit
      @Bisqwit  5 лет назад

      Why is it relevant?

  • @lisamariefan
    @lisamariefan 7 лет назад

    For your Image Test Pattern 2 you seem to have optimal scores in everything but instruction count. It's possible to do it in 11 instructions. As a hint: invalid colors show as black.

  • @thumbwit
    @thumbwit 6 лет назад

    Did you ever get around to shifting the bits to double the value?

    • @Bisqwit
      @Bisqwit  6 лет назад

      Context please? It’s a bit long video.

    • @thumbwit
      @thumbwit 6 лет назад

      Of course! Around 5:25 part of the task was to double the value. It looked as though you had the most optimal solution but still weren't hitting the best cycle count. In C if you shift the bits to the left by 1 (n

    • @Gilpow
      @Gilpow 6 лет назад +1

      No they didn't... The instruction set is very limited (you can see it in the window to the left), you need to solve problems with those few tools

    • @Bisqwit
      @Bisqwit  6 лет назад

      Scotty: Sorry about the delay in reply. RUclips does not send me notifications of replies to old threads, it only notifies me of new posts, or of replies to comment threads that I began. Yes, TIS-100 does not have bit-shift operations.

  • @vitalnutrients744
    @vitalnutrients744 5 лет назад

    What the hell do the arrows mean and what is the path?

    • @Bisqwit
      @Bisqwit  5 лет назад

      The arrows mean that the node can communicate in that direction. When a read instruction has UP as their source, it waits for data from the node that is above them, and receives it when ready. When a write instruction has UP as their target, it sends the data to the node that is above them, and continues when the node has read it. Similarly for the other directions.

  • @eelzchannel
    @eelzchannel 8 лет назад

    Could you please give a link to your wallpaper ?

    • @Bisqwit
      @Bisqwit  8 лет назад

      I can't remember where I got it. I would have to search. You would have to search.

  • @benjamindelpino1088
    @benjamindelpino1088 5 лет назад

    Hello... What OS do you use?

  • @ntzutzancmoon
    @ntzutzancmoon 5 лет назад

    reminds me Z80 programming

  • @automedi
    @automedi 5 лет назад +5

    You will be famous one day. remember me

  • @adam7868
    @adam7868 7 лет назад +1

    wait a minute, shouldn't it be mov dest,src

    • @Bisqwit
      @Bisqwit  7 лет назад +3

      It is a question of convention.

    • @adam7868
      @adam7868 7 лет назад

      yeah because tasm is usually like that(or well at least thats how i have always programmed tasm programs) and the same goes with masm ... but why should this be any different

    • @Bisqwit
      @Bisqwit  7 лет назад +1

      tasm and masm are both assemblers for Intel x86 processors. TIS-100 is not Intel x86.

    • @adam7868
      @adam7868 7 лет назад

      oh ... then why not just have it the same since everyone is used to it that way(i know im "nitpicking" but im really interested)

    • @Bisqwit
      @Bisqwit  7 лет назад +3

      No, not everyone is used to that way. That's just your perspective. There are plenty of other processors people write or have written assembler code for. Including but not limited to 6502, ARM, Sparc, and m68k. Each of these have different assembler languages that only share one thing: Complex operations are formed from tiny instructions that do tiny things mainly involving transferring data from place a to place b and modifying data. They may have other superficial similarities.

  • @RoamingAdhocrat
    @RoamingAdhocrat 5 лет назад

    I thought you'd complete the entire game in an hour :p

    • @RoamingAdhocrat
      @RoamingAdhocrat 5 лет назад

      Gives me hope tbh. If I'm better at TIS-100 than you, maybe I can also grasp multithreaded C++ 😋

    • @Bisqwit
      @Bisqwit  5 лет назад

      It usually takes me a while to get to speed. After 50 hours of in-game time, I had completed all 51 puzzles, and after 52 hours, all achievements were done.

  • @crimecity122
    @crimecity122 8 лет назад

    Which linux you are using?

    • @Bisqwit
      @Bisqwit  8 лет назад +1

      Are you interested in the distribution (what this means mostly is package manager and installation procedure), the kernel version (which is what Linux really is, the kernel, but unless you are a security researcher, a kernel developer, or dealing with exotic hardware, it is pretty much irrelevant), or the desktop environment (which affects how it looks but is by no means bound to Linux in particular, let alone some distribution)?

    • @crimecity122
      @crimecity122 8 лет назад +1

      Bisqwit I am interested in distribution

    • @Bisqwit
      @Bisqwit  8 лет назад +1

      Debian.

    • @crimecity122
      @crimecity122 8 лет назад

      Thx)

  • @SoftBreadSoft
    @SoftBreadSoft 5 лет назад

    " fight draconian system limitations, and compete against your peers" Just like at the office

  • @KuraIthys
    @KuraIthys 7 лет назад

    This game really taught me how bad I am at coding on some level.
    I've done many of the levels, even optimised a few.
    But about 3 of the final stages are way too complex for me to make sense of.

    • @Bisqwit
      @Bisqwit  7 лет назад

      Some of them are really tricky, yes. Stupidly complex, too. There is a reason why I have so far only created one solution for "sequence sorter". But are you talking about the 3 final stages of the game, or the 3 final stages of the first half of the game? The TIS-NET directory has 25 puzzles more. Some of them are easier than the first part, some of them even more difficult.

    • @KuraIthys
      @KuraIthys 7 лет назад

      I'm talking about the ones from the first half.
      I believe the ones I've not been able to figure out so far are Signal Divider, Sequence Indexer, Sequence sorter, and Exposure mask viewer.
      I also know Histogram viewer gave me a LOT of grief, though I did get a working solution for it in the end.
      I mean, I'm sure if I really forced myself I could get working solutions for the remaining ones, but I kinda lost my motivation.
      More so than anything else it's dealing with how register starved the TIS-100 design is.
      So many things would become trivial, or at least a lot easier if there were just a second register that could hold a loop variable while manipulating other stuff.
      Instead I drive myself mad trying to juggle variables around with essentially no real storage to speak of other than weird message passing between different nodes.
      Anyway, it can be fun, but also very frustrating.
      It makes the SNES coding and 65816 assembly I'm dealing with right now seem absurdly relaxed and generous by comparison. XD

    • @Bisqwit
      @Bisqwit  7 лет назад +2

      Yeah, operations that work between the ACC and BAK would be so convenient. Or a comparison opcode that does not destroy the register. But it is not totally far-fetched. PIC16 is almost as limited! I made a video about it some years ago.
      Signal Divider: The simplest way would be to solve this using repeated subtraction. A more sophisticated algorithm is explained here, bisqwit.iki.fi/story/howto/bitmath/#DivAndModDivisionAndModulo, but my attempt at implementing it in TIS-100 ended up being less optimal in all aspects than the dumb methods.
      Sequence Indexer: This is pretty self-evident; I don’t think I can give any particularly useful hint. The biggest problem is fitting all the code in the boxes.
      Sequence Sorter: There are plenty of sorting algorithms to choose from. The simplest one in traditional languages might not be the simplest one for this system, although it would probably be _much_ more efficient than what I ended up doing. Categorically there are two options: 1) Sort data when reading it in, or 2) Sort data when printing it out. Consider the tradeoffs of both. There is also the consideration of choosing whether you do operations when copying data from stack 1 to stack 2, or from stack 2 to stack 1, or maybe both.
      Exposure Mask Viewer: The more you keep doing thinking this, the easier it becomes. This is one of those puzzles where I have several boxes that do nothing but dispatch commands given with JRO. Commands such as "read & save value", "increment value", "send value". It is a similar principle as in Histogram Viewer and Store Image Decoder.

    • @KuraIthys
      @KuraIthys 7 лет назад

      Ouch. PIC16 sounds painful. XD
      That's helpful though. I think the one I'm closest to solving as it is is Sequence sorter. Because it is fairly straightforward in terms of logic - just getting it to actually work with the way you have to juggle data around is a bit of a pain.
      Sequence indexer... I think I did understand how to write it in a general sense, but was indeed having serious problems cramming the needed instructions into the space available.
      Exposure mask viewer... I forget what was causing me difficulty here. But the image output routine is... Interesting, to say the least. XD (the fact that it works with horizontal runs of pixels while I needed vertical ones was the main thing making histogram viewer a challenge.)
      Signal divider - Having solved the multiplication one I knew the general idea was similar. This just adds in a few extra complexities that get a bit annoying.
      Part of the reason I gave up is because trying to juggle variables and fit code into such heavily constrained instruction counts was starting to just be more tedious than interesting.
      I'll probably go back to it at some point, but I'm not sure when.
      I think right now I'd rather write a raycasting engine for the SNES exploiting mode 7 and scanline effects. XD
      This should be exceptionally fast, but it does have the constraint that the raycasting has to be done vertically rather than horizontally. (because altering PPU parameters per scanline is very cheap, but altering anything per column of pixels very much is not.)
      Mode 7 is interesting, in that it is basically a screen-space texture mapping unit. Again, due to scanline tricks the number of effects you can do with vertical lines is far in excess of what you can do with horizontal ones.
      If anything, being good at advanced scanline effects is the defining characteristic of the SNES vs other systems of the era. (I mean, scanline effects are a common trait of nearly all 8 and 16 bit systems, but the SNES seems exceptionally well suited to them.)

  • @r-prime
    @r-prime 3 года назад

    This guy booting steam games from command line...

  • @DoomRater
    @DoomRater 5 лет назад

    Already bursting at the seams laughing at 3:40. It just seems so funny to watch someone write the bug and fail to catch what's wrong initially.

    • @Bisqwit
      @Bisqwit  5 лет назад

      It took some time to get understanding how this system works.

  • @pavelageev231
    @pavelageev231 5 лет назад

    † = someone on my friend list has a better record - why the grave cross? Do you put them on your assassination list?

    • @Bisqwit
      @Bisqwit  5 лет назад

      It’s not a grave gross. It is a typographical dagger. Educate yourself: en.wikipedia.org/wiki/Dagger_%28typography%29

    • @pavelageev231
      @pavelageev231 5 лет назад

      @@Bisqwit Why do use this symbol? As a variant of asterisk or is it something else?

    • @Bisqwit
      @Bisqwit  5 лет назад

      I needed several different kinds of reference symbols, and I found * too distracting so I chose others.

  • @neuemage
    @neuemage 5 лет назад

    Thanks I hate it, this "game" is like doing homework xD

    • @GenesisRussell-jt2rp
      @GenesisRussell-jt2rp 5 лет назад +3

      ya frick learning !

    • @chrisguy6301
      @chrisguy6301 5 лет назад +3

      @@GenesisRussell-jt2rp expect low wages and not understanding why your boss is mad at you lol
      Learn how to learn, and it's actually all pretty easy!

    • @GenesisRussell-jt2rp
      @GenesisRussell-jt2rp 5 лет назад +2

      @@chrisguy6301 i was being sarcastic brother, i love to learn

    • @chrisguy6301
      @chrisguy6301 5 лет назад +2

      @@GenesisRussell-jt2rp that's good to hear!!

  • @PsychosisRecords
    @PsychosisRecords 7 лет назад

    Im at 9:12 but try jmp

    • @Bisqwit
      @Bisqwit  7 лет назад +2

      It is generally a good idea to avoid JMP, because it takes 1 cycle to process and it accomplishes not much at all. At 9:12 I was wondering how to make that puzzle faster. The trick is parallelism. Maximize the rate at which data is read from input by passing it alternatingly into two nodes that both double their input and feed to a common output.

    • @MamboBean343
      @MamboBean343 7 лет назад +1

      the trick for that is to use the ANY register and have two nodes each read in data

  • @Dharahion
    @Dharahion 8 лет назад

    Are you martian?

    • @Bisqwit
      @Bisqwit  8 лет назад +3

      You already made that comment once.

    • @Dharahion
      @Dharahion 8 лет назад

      You read all comments?

    • @Bisqwit
      @Bisqwit  8 лет назад +3

      Dharahion: Always.

    • @Dharahion
      @Dharahion 8 лет назад

      Nice bro!!!

  • @flamegames2888
    @flamegames2888 8 лет назад

    You can join the Freedome Network and get some money

  • @biomechanoid
    @biomechanoid 5 лет назад

    most boring game i’ve ever seen

    • @Bisqwit
      @Bisqwit  5 лет назад +2

      Be sure to check MHRD as well! ruclips.net/video/3Ld-IlQ93uo/видео.html