< 1589069476 569064 :tromp!~tromp@2a02:a210:ca3:2800:5500:1593:557c:1efb QUIT :Remote host closed the connection < 1589069508 970291 :tromp!~tromp@2a02:a210:ca3:2800:e84b:3e43:2a95:f731 JOIN :#esoteric < 1589069569 806561 :kevinalh!~kevinalh@179.6.193.17 QUIT :Ping timeout: 264 seconds < 1589070041 843098 :kevinalh!~kevinalh@179.6.193.17 JOIN :#esoteric < 1589072137 227079 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :working on a token-based rewriting language that has some vague resemblance to concatenative languages. < 1589072159 743427 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :with native support for lists, anything is possible. < 1589072271 995302 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :https://hatebin.com/ssyfkqowua < 1589072419 738592 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :while loops are proving tricky with the "infix" syntax. < 1589072475 177914 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :if/else was also tricky. it assumes a default evaluation order of right to left. writing it to be direction agnostic is kind of the next goal. < 1589072582 151634 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :if rdrop is evaluated before rswap, for example, you'll end up swapping two unrelated values on the right-hand side, and that'll be messy if anything else is beyond that context. < 1589076187 786506 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1589076293 273776 :LKoen!~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr QUIT :Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.” < 1589080030 809199 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 256 seconds < 1589081110 745762 :moony!moony@hellomouse/dev/moony PRIVMSG #esoteric :imode: that language looks fun < 1589081122 474563 :moony!moony@hellomouse/dev/moony PRIVMSG #esoteric :and frankly I like the syntax, so I think i'm going to steal it for my own use < 1589081124 689638 :moony!moony@hellomouse/dev/moony PRIVMSG #esoteric :ACTION runs < 1589081250 168706 :moony!moony@hellomouse/dev/moony PRIVMSG #esoteric :for less esoteric purposes, mind you < 1589082353 257967 :int-e!~noone@int-e.eu PRIVMSG #esoteric :that vaguely reminds me of that one time I tried TCL. < 1589082365 585855 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(because of the many square brackets) < 1589082423 260856 :pikhq!sid394595@gateway/web/irccloud.com/x-hovhomidionhhtrh PRIVMSG #esoteric :yay, Tcl < 1589082533 726887 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Have you tried to program in PostScript one time, though? (Apparently, even the inventor of INTERCAL uses PostScript.) < 1589082605 182036 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: I think you read the M:tG comprule updates. If I cast a Migratory Greathorn and choose to mutate an opponent's creature with it, then who controls the triggered ability triggered from the Greathorn? < 1589082765 91141 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :The spell has to have the same owner as the creature you choose to mutate, I think. So unless the opponent's creature is owned by the same player as the spell (e.g. because your opponent took control of your creature), you can't cast that spell like that. < 1589082810 467599 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :However, to answer your question, let's see the Migratory Greathorn card, first. < 1589082960 42691 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :OK, rule 702.139d merely says "An ability that triggers whenever a creature mutates triggers when a spell merges with a creature as a result of a resolving mutating creature spell." I think it triggers after it is on the battlefield, so your opponent controls that ability, but you get to decide to put it on the top or bottom. < 1589082985 28809 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :(If someone knows to the contrary, you can tell me, but I think it works like how I mentioned.) < 1589083351 618582 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: yeah, there's a requirement that the parts of the mutated creature has to have the same owner, so this doesn't come up too often, but there are lots of effects to take control of a creature < 1589083388 321321 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :I realized something, which is that if you are using my "generalized mutate" rule but only using official cards (maybe because it is a kind of Constructed game with both custom and official cards, but neither player decided to use any custom cards), nevertheless it has an effect on the game, because it is now possible to use Artificial Evolution to prevent a creature from mutating. < 1589083458 387956 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :b_jonas: Yes. I wrote what is the best I can tell from reading the rules. < 1589083462 647295 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :heck, it's not even quite clear to me from the rules who will control the merged creature after you mutate, and whether the order of the cards depends for that < 1589083471 988902 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :ouch < 1589083523 310637 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :I believe it will have the same controller as the original, because who controls a permanent is a continuous property, and continuous effects continue to apply. < 1589083782 115195 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :(Rule 721.2c specifically says that continuous effects continue to apply.) < 1589083829 620526 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: I don't know, there might not be a continuous effect if the original creature is a card that was put otb under the opponent's control, such as with Gruesome Encore. < 1589083894 468915 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :I think that since it is a continuous property, it is still a continuous effect, although not a static effect. < 1589083924 203513 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Although, I am unsure. < 1589084008 448440 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :yeah, 721.2c says that the merged object is the same object as the permanent that already existed < 1589084062 374276 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :However, I think that if (hypothetically) some static ability says "you control all blue permanents", and the mutation changes it to not blue, then since the mutation is a layer 1 effect and control is a layer 2 effect, this means that control effect will no longer apply (and Thoughtlace won't allow you to take it back, since that is a layer 5 effect). < 1589084126 731580 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :"you control all blue permanents" is a very unlikely effect, but sure < 1589084163 799752 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Yes, it is unlikely, but I was giving a hypothetical example. < 1589084301 281688 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :I should ask efnet/#mtgrules probably < 1589084340 416933 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Yes, perhaps they know better than I do. < 1589084353 996143 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :that or the scryfall web forum < 1589084376 461352 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :oh, but I should re-read the release notes first < 1589084404 108620 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Yes, maybe they answered the question for you < 1589084911 85137 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Do you like my "Master Shuffler" and "Malaclypse the Younger" Un-cards? < 1589084995 701488 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :I don't know, I haven't looked at your cards lately, especially not your un-cards < 1589085048 759492 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Master Shuffler shuffles players, planeswalkers, mana pools, your hand, planar decks, scheme decks, time stamps, and the layer system. < 1589085063 805618 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Malaclypse the Younger makes all intervening if clauses true. < 1589085418 712416 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: efnet/#magicjudges-rules tells me that the opponent keeps control of the permanent when it merges with a mutate card < 1589085437 496451 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :and that they'll also control the "whenever this creature mutates" ability < 1589085463 513606 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :so if an opponent owns my treefolk, I can mutate it with a Greathorn and they'll have to shuffle < 1589085530 986566 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Yes, that is what I thought. < 1589085547 259753 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Now I am more certain of it, because they said the same thing. < 1589085989 640082 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :moony: feel free to steal lol. < 1589086017 580910 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :it's an inconvenient little language because you don't have a separation between code and data. < 1589087599 193525 :MDude!~MDude@74.5.130.30 QUIT :Quit: Going offline, see ya! (www.adiirc.com) < 1589088839 890110 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz JOIN :#esoteric < 1589088909 127617 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :What commands are required to make a language with two stacks TC? < 1589089064 652736 :xelxebar!~xelxebar@gateway/tor-sasl/xelxebar QUIT :Remote host closed the connection < 1589089082 697574 :xelxebar!~xelxebar@gateway/tor-sasl/xelxebar JOIN :#esoteric < 1589089603 461557 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :I think it depends on the other stuff in the programming language < 1589089687 932633 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Okay. Let's say we have operands to increment and decrement both stacks, move the top item from each stack to the top of the other one, and some kind of control flow based on the value in each stack. < 1589089707 563692 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :This is just a thought experiment of course, I'm not going to actually turn it into a language. < 1589089781 509004 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Yes, that can be similar to brainfuck, I think. < 1589089792 68356 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :How so? < 1589089834 810954 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :You could consider having a tape where one stack is everything on the left of the tape and other stack is everything on the right of the tape, I think. < 1589089844 820029 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :I can see <> being equivalent to the moving between stacks and the increment/decrement being equivalent, but I don't really get the whole control flow part. < 1589089853 940349 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Would the control flow still work the same way? < 1589090002 69952 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Depends how you define it, I suppose. < 1589090024 327640 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Okay. This thought experiment isn't very fleshed out yet. < 1589090075 907414 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz JOIN :#esoteric < 1589090079 522178 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Let's just say that depending on whether the sum of the values at the top of the stacks is even or odd, it does different stuff. < 1589090088 645987 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Wait, that's not Turing complete. < 1589090091 693207 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Never mind that. < 1589090279 887664 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz QUIT :Ping timeout: 245 seconds < 1589090432 447714 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PART :#esoteric < 1589090436 432976 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz JOIN :#esoteric < 1589090453 812695 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Did you post the programming language you invented before, on the esolang wiki yet? < 1589090459 520818 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Nah. < 1589090469 1405 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :I don't think it's fully fledged enough. < 1589090485 143466 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Besides, there are already 4 major Befunge copies, and this is fairly similar. < 1589090497 84493 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :All it really does is uses a different memory model. < 1589090536 949537 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :And the whole "you can have as many pointers as you like" thing just annoyed me. It seems... inelegant? < 1589090537 451164 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :I like it, though. < 1589090578 37002 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Do you? I may post it then. I have an article in the works for it, although I'm not sure whether I should be like all of those people who spampost BF deriatives. < 1589090596 247567 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :The 2d control flow feels a lot like Befunge. < 1589090795 902515 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :I'll post it now thought, seeing as you like it. < 1589090798 734602 :Antebrationist45!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz QUIT :Remote host closed the connection < 1589091202 886965 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz JOIN :#esoteric < 1589091484 155970 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz PRIVMSG #esoteric :Alright, this thought experiment might become a language now. > 1589092255 729208 PRIVMSG #esoteric :14[[07Special:Log/upload14]]4 upload10 02 5* 03FSHelix 5* 10uploaded "[[02File:1 Number of operations in divmod.jpeg10]]" > 1589092319 967217 PRIVMSG #esoteric :14[[07Special:Log/upload14]]4 upload10 02 5* 03FSHelix 5* 10uploaded "[[02File:2 Number of operations in divmod.jpeg10]]" < 1589092604 464281 :Antebrationist!ca9a86c4@202-154-134-196.ubs-dynamic.connections.net.nz QUIT :Remote host closed the connection > 1589093061 362538 PRIVMSG #esoteric :14[[07Special:Log/upload14]]4 upload10 02 5* 03FSHelix 5* 10uploaded "[[02File:3 Number of operations in divmod.jpeg10]]" > 1589093093 750293 PRIVMSG #esoteric :14[[07Special:Log/upload14]]4 upload10 02 5* 03FSHelix 5* 10uploaded "[[02File:4 Number of operations in divmod.jpeg10]]" > 1589093127 11707 PRIVMSG #esoteric :14[[07Special:Log/upload14]]4 overwrite10 02 5* 03FSHelix 5* 10uploaded a new version of "[[02File:4 Number of operations in divmod.jpeg10]]" < 1589093252 819537 :kevinalh!~kevinalh@179.6.193.17 QUIT :Ping timeout: 272 seconds < 1589094930 649256 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1589095084 836621 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1589095782 457012 :Frater_EST!~adrianbib@172.242.0.73 JOIN :#esoteric > 1589097477 196336 PRIVMSG #esoteric :14[[07Brainfuck algorithms14]]4 10 02https://esolangs.org/w/index.php?diff=71978&oldid=70699 5* 03FSHelix 5* (+965) 10 < 1589098560 815330 :imode!~linear@unaffiliated/imode QUIT :Ping timeout: 256 seconds < 1589099171 423861 :ais523!~ais523@unaffiliated/ais523 QUIT :Ping timeout: 260 seconds < 1589099343 918617 :izabera1!izabera@unaffiliated/izabera JOIN :#esoteric < 1589099601 15202 :izabera!~izabera@unaffiliated/izabera QUIT :Quit: meow < 1589099705 576337 :izabera1!izabera@unaffiliated/izabera NICK :izabera < 1589100752 302678 :kspalaiologos!~kspalaiol@176.221.122.71 JOIN :#esoteric < 1589101707 835237 :LKoen!~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr JOIN :#esoteric < 1589102680 440126 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1589102790 843352 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 272 seconds < 1589102791 275349 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1589103038 554325 :izabera!izabera@unaffiliated/izabera QUIT :Quit: WeeChat 2.8 < 1589103061 177429 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1589103465 47897 :izabera!izabera@unaffiliated/izabera JOIN :#esoteric < 1589103466 848821 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1589104254 300323 :kspalaiologos!~kspalaiol@176.221.122.71 QUIT :Ping timeout: 240 seconds < 1589104826 190079 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1589108281 515070 :heroux!sandroco@gateway/shell/insomnia247/x-exbgkgzwabkhhmzs QUIT :Ping timeout: 258 seconds < 1589108684 488521 :heroux!sandroco@gateway/shell/insomnia247/x-omwyulzrnvywiawl JOIN :#esoteric < 1589111498 429453 :rain1!~debian@unaffiliated/rain1 JOIN :#esoteric > 1589113401 569834 PRIVMSG #esoteric :14[[07LAMPA14]]4 M10 02https://esolangs.org/w/index.php?diff=71979&oldid=50508 5* 03PythonshellDebugwindow 5* (-3) 10 > 1589113771 650725 PRIVMSG #esoteric :14[[07TinyBF14]]4 M10 02https://esolangs.org/w/index.php?diff=71980&oldid=71013 5* 03PythonshellDebugwindow 5* (+70) 10/* External resources */ < 1589114352 497969 :arseniiv_!~arseniiv@95.105.13.161.dynamic.ufanet.ru JOIN :#esoteric > 1589114449 813342 PRIVMSG #esoteric :14[[07User:PythonshellDebugwindow14]]4 M10 02https://esolangs.org/w/index.php?diff=71981&oldid=71924 5* 03PythonshellDebugwindow 5* (+45) 10/* Languages */ > 1589114965 581914 PRIVMSG #esoteric :14[[07Esolang:Sandbox14]]4 M10 02https://esolangs.org/w/index.php?diff=71982&oldid=71735 5* 03PythonshellDebugwindow 5* (+11) 10 > 1589115032 147341 PRIVMSG #esoteric :14[[07Esolang:Sandbox14]]4 M10 02https://esolangs.org/w/index.php?diff=71983&oldid=71982 5* 03PythonshellDebugwindow 5* (-195) 10 < 1589115654 657114 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 260 seconds < 1589115988 827533 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1589116575 257950 :rain1!~debian@unaffiliated/rain1 PRIVMSG #esoteric :hi < 1589116919 450931 :arseniiv_!~arseniiv@95.105.13.161.dynamic.ufanet.ru PRIVMSG #esoteric :ı̣ɥ < 1589116924 566003 :arseniiv_!~arseniiv@95.105.13.161.dynamic.ufanet.ru NICK :arseniiv < 1589117019 217983 :arseniiv!~arseniiv@95.105.13.161.dynamic.ufanet.ru PRIVMSG #esoteric :oh! have someone read something comprehensive about error recovery in parsers? I think I have almost no idea which approaches are out there and which ones are deemed more useful > 1589119566 391551 PRIVMSG #esoteric :14[[07Brainfuck implementations14]]4 10 02https://esolangs.org/w/index.php?diff=71984&oldid=71961 5* 03Zax2002 5* (+0) 10/* Normal implementations */ > 1589119667 993035 PRIVMSG #esoteric :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=71985&oldid=71960 5* 03Zax2002 5* (+0) 10/* Introductions */ > 1589119669 892281 PRIVMSG #esoteric :14[[07Bout14]]4 N10 02https://esolangs.org/w/index.php?oldid=71986 5* 03PythonshellDebugwindow 5* (+1233) 10Created page with "'''Bout''' is an assembly-like esolang created by [[User:PythonshellDebugwindow]]. ==Syntax== Bout programs consist of lines with opcodes followed by any arguments they might..." < 1589120220 389252 :kspalaiologos!~kspalaiol@176.221.122.71 JOIN :#esoteric > 1589121287 389363 PRIVMSG #esoteric :14[[07Bout14]]4 M10 02https://esolangs.org/w/index.php?diff=71987&oldid=71986 5* 03PythonshellDebugwindow 5* (+834) 10/* Truth-machine */ > 1589121321 453779 PRIVMSG #esoteric :14[[07Language list14]]4 M10 02https://esolangs.org/w/index.php?diff=71988&oldid=71929 5* 03PythonshellDebugwindow 5* (+11) 10/* B */ > 1589121340 680684 PRIVMSG #esoteric :14[[07User:PythonshellDebugwindow14]]4 M10 02https://esolangs.org/w/index.php?diff=71989&oldid=71981 5* 03PythonshellDebugwindow 5* (+37) 10/* Languages */ < 1589122057 414373 :kevinalh!~kevinalh@179.6.193.17 JOIN :#esoteric < 1589122181 526042 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :arseniiv: I think the best way to have good error recovery is to design the syntax of your language well. For example, in typical python code, if you miscount parenthesis and forget to close one, you usually get a confused error message where the parser thinks that the next line is a continuation of your statement. but if you write your program to put a semicolon at the end of every simple statement, < 1589122187 534813 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :which python allows, then you get good error messages, because the parser knows that semicolons (unlike line breaks) can only appear between statements, not inside parenthesis. < 1589122251 910333 :arseniiv!~arseniiv@95.105.13.161.dynamic.ufanet.ru PRIVMSG #esoteric :b_jonas: wait, Python allows semicolons?? Maybe that’s JS? < 1589122304 395589 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :if you design your language to have tokens that only appear between statements and you can't nest statements inside expressions, then you can recover from unbalanced expressions. similarly if you use a different token to end a function definition than to end the body of a conditional, then even if you miscount your braces inside the function, the parser will know where the function definition ends and < 1589122310 374200 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :can recover to parse the next function. < 1589122346 593190 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :and eg. in C, double-quoted string literals can't have line break in the end, so if you forget a double quote, the lexer can recover in the next line. < 1589122355 294928 :kevinalh!~kevinalh@179.6.193.17 QUIT :Ping timeout: 260 seconds < 1589122365 328765 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :sadly most programming languages these days aren't designed to match these principles. < 1589122404 642936 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :it's sort of understandable, because it goes against letting you write flexible and brief code where only a few kinds of braces and semicolons are available so many punctuation are precious and have several overloaded meanings < 1589122437 333014 :kevinalh!~kevinalh@179.6.193.17 JOIN :#esoteric < 1589122468 381884 :arseniiv!~arseniiv@95.105.13.161.dynamic.ufanet.ru PRIVMSG #esoteric :oh, indeed Python understands semicolons. Shame I’ve read a bit of its grammar and didn’t notice they are allowed as separators :| < 1589122512 80003 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :hmm, I just realized. in Consumer Society, every program can trivially be written such that square brackets are nested to at most 2 depth. I can add a switch to the interpreter where it absolutely refuses square brackets nested to more than 2 depth, that way it can find missing closing square brackets and recover from them. < 1589122558 374703 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :that won't help with missing a curly brace, but it's still useful to some extent. < 1589122584 167901 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :but Consumer Society is an esolang that's not very suitable to finding errors in compile time in first place, so even that is something. < 1589122625 38758 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :if you want your compiler to find errors, you'd use a programming language with a type system and a compiler, not an esolang like Consumer Society. < 1589122831 325010 :kevinalh!~kevinalh@179.6.193.17 QUIT :Ping timeout: 260 seconds > 1589123290 909476 PRIVMSG #esoteric :14[[07(HA)pple waITING14]]4 10 02https://esolangs.org/w/index.php?diff=71990&oldid=69154 5* 03DmilkaSTD 5* (+27) 10 < 1589123487 639897 :arseniiv!~arseniiv@95.105.13.161.dynamic.ufanet.ru PRIVMSG #esoteric :b_jonas: funny that I consider writing a parser for an esolang with a touch of typing via abstract types: the runtime has actually only one data type and all operations work on it nicely, but you’d be able to add simple function contracts like “this function returns N”, “if this function takes N, it returns N”, and then these would be enforced by the compiler in all the code except the part where these functions are defined < 1589123546 6340 :arseniiv!~arseniiv@95.105.13.161.dynamic.ufanet.ru PRIVMSG #esoteric :I don’t know if this approach is called abstract types but I thought this is the closest match < 1589123554 456461 :kevinalh!~kevinalh@179.6.193.17 JOIN :#esoteric > 1589123565 582238 PRIVMSG #esoteric :14[[07AT14]]4 10 02https://esolangs.org/w/index.php?diff=71991&oldid=65124 5* 03DmilkaSTD 5* (+17) 10 > 1589124425 833133 PRIVMSG #esoteric :14[[07Asvi14]]4 N10 02https://esolangs.org/w/index.php?oldid=71992 5* 03DmilkaSTD 5* (+5) 10Created page with "::Wip" > 1589124444 913218 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=71993&oldid=71992 5* 03DmilkaSTD 5* (+2) 10 > 1589124455 110820 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=71994&oldid=71993 5* 03DmilkaSTD 5* (+0) 10 > 1589124611 18112 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=71995&oldid=71994 5* 03DmilkaSTD 5* (+162) 10 < 1589124771 817436 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1589124812 963097 :Cale!~cale@2607:fea8:9960:35:85c8:e28f:24d2:a4af QUIT :Ping timeout: 260 seconds < 1589124886 297525 :MDude!~MDude@74.5.130.30 JOIN :#esoteric > 1589124889 396522 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=71996&oldid=71995 5* 03DmilkaSTD 5* (+277) 10 > 1589124915 16598 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=71997&oldid=71996 5* 03DmilkaSTD 5* (+15) 10 > 1589124924 843381 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=71998&oldid=71997 5* 03DmilkaSTD 5* (+0) 10 > 1589125092 619777 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=71999&oldid=71998 5* 03DmilkaSTD 5* (+29) 10 > 1589125109 140196 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72000&oldid=71999 5* 03DmilkaSTD 5* (+0) 10 > 1589125192 266400 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72001&oldid=72000 5* 03DmilkaSTD 5* (+73) 10 > 1589125257 177395 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72002&oldid=72001 5* 03DmilkaSTD 5* (+47) 10 > 1589125270 771607 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72003&oldid=72002 5* 03DmilkaSTD 5* (+27) 10 < 1589125554 4847 :Cale!~cale@2607:fea8:9960:35:ec9d:8ff0:9eb6:856f JOIN :#esoteric > 1589126054 307924 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72004&oldid=72003 5* 03DmilkaSTD 5* (+271) 10 > 1589126227 355838 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72005&oldid=72004 5* 03DmilkaSTD 5* (+86) 10 > 1589126249 657248 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72006&oldid=72005 5* 03DmilkaSTD 5* (-13) 10 > 1589126288 816087 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72007&oldid=72006 5* 03DmilkaSTD 5* (-73) 10 > 1589126307 938291 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72008&oldid=72007 5* 03DmilkaSTD 5* (+3) 10 > 1589127871 382161 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72009&oldid=72008 5* 03DmilkaSTD 5* (+379) 10 > 1589128133 41962 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72010&oldid=72009 5* 03DmilkaSTD 5* (+277) 10 > 1589128153 40320 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72011&oldid=72010 5* 03DmilkaSTD 5* (+6) 10 > 1589128170 54469 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72012&oldid=72011 5* 03DmilkaSTD 5* (+1) 10 > 1589128266 117402 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72013&oldid=72012 5* 03DmilkaSTD 5* (+28) 10 > 1589128446 127687 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72014&oldid=72013 5* 03DmilkaSTD 5* (+52) 10 > 1589128525 991518 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72015&oldid=72014 5* 03DmilkaSTD 5* (+161) 10 > 1589128537 780434 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72016&oldid=72015 5* 03DmilkaSTD 5* (-1) 10 > 1589128550 544544 PRIVMSG #esoteric :14[[07Asvi14]]4 10 02https://esolangs.org/w/index.php?diff=72017&oldid=72016 5* 03DmilkaSTD 5* (-4) 10 < 1589129256 675724 :imode!~linear@unaffiliated/imode JOIN :#esoteric < 1589130158 792701 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 260 seconds < 1589130272 830324 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1589133387 944402 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 260 seconds < 1589134312 400939 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Automatic semicolon insertion is I think one o the bad features of JavaScript. < 1589134389 58114 :Frater_EST!~adrianbib@172.242.0.73 QUIT :Read error: Connection reset by peer < 1589134748 705888 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :A bad feature of PostScript is the inability to use automatic allocation with the readline operator. < 1589135338 771545 :imode!~linear@unaffiliated/imode QUIT :Ping timeout: 260 seconds > 1589135458 746277 PRIVMSG #esoteric :14[[07Special:Log/newusers14]]4 create10 02 5* 03Orb-H 5* 10New user account < 1589135856 811964 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1589136365 953731 :tromp!~tromp@2a02:a210:ca3:2800:e84b:3e43:2a95:f731 QUIT :Ping timeout: 240 seconds < 1589136550 910349 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589136830 684367 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :there are js coding guidelines that suggest omiting the semicolon wherever possible and only set it at the start of a line when necessary < 1589136841 436667 :craigo!~craigo@144.136.206.168 JOIN :#esoteric < 1589136858 361691 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :which is a horrible recommendation imho since it will force you to enter/remove semicilons if you move code around < 1589136920 911743 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :I agree, and I always add the semicolons when writing a program in JavaScript. < 1589136959 526509 :rain1!~debian@unaffiliated/rain1 PRIVMSG #esoteric :WHY? < 1589137006 805104 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Do you mean why I, myname, what myname mentioned, or all of these? < 1589137294 911063 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Remote host closed the connection < 1589137320 823492 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1589137353 445316 :kevinalh!~kevinalh@179.6.193.17 QUIT :Ping timeout: 258 seconds < 1589137554 291594 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 JOIN :#esoteric < 1589137860 325362 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589137882 761653 :kevinalh!~kevinalh@179.6.193.17 JOIN :#esoteric < 1589138378 883790 :kspalaiologos!~kspalaiol@176.221.122.71 QUIT :Quit: Leaving < 1589138481 371718 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer > 1589138740 980105 PRIVMSG #esoteric :14[[07Seltzer Spigot14]]4 N10 02https://esolangs.org/w/index.php?oldid=72018 5* 03InfiniteDonuts 5* (+850) 10Created page with "'''Seltzer Spigot''' is a purely functional esolang designed by [[User:InfiniteDonuts]]. It is not yet complete. Its philosophy is not just minimalism, as in some esolangs. R..." < 1589138884 689529 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Remote host closed the connection > 1589138913 546832 PRIVMSG #esoteric :14[[07Dig14]]4 M10 02https://esolangs.org/w/index.php?diff=72019&oldid=71962 5* 03Emerald 5* (+89) 10Better storage > 1589138935 800207 PRIVMSG #esoteric :14[[07Dig14]]4 M10 02https://esolangs.org/w/index.php?diff=72020&oldid=72019 5* 03Emerald 5* (-1) 10 > 1589138979 404432 PRIVMSG #esoteric :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=72021&oldid=71988 5* 03Emerald 5* (+58) 10Added own language < 1589139964 816568 :imode!~linear@unaffiliated/imode JOIN :#esoteric < 1589140854 936877 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589141157 835970 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Ping timeout: 260 seconds > 1589141627 590427 PRIVMSG #esoteric :14[[07Seltzer Spigot14]]4 10 02https://esolangs.org/w/index.php?diff=72022&oldid=72018 5* 03InfiniteDonuts 5* (-500) 10 < 1589141673 463068 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric > 1589141984 994158 PRIVMSG #esoteric :14[[07Special:Log/move14]]4 move10 02 5* 03InfiniteDonuts 5* 10moved [[02Seltzer Spigot10]] to [[DotSlash]]: Changed the name > 1589142105 705574 PRIVMSG #esoteric :14[[072001: An Esolang Odyssey14]]4 M10 02https://esolangs.org/w/index.php?diff=72025&oldid=71891 5* 03PythonshellDebugwindow 5* (+0) 10/* Instructions */ < 1589142227 111925 :rain1!~debian@unaffiliated/rain1 QUIT :Quit: leaving < 1589142399 710075 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Remote host closed the connection < 1589142559 837402 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1589142766 775937 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer > 1589142995 907448 PRIVMSG #esoteric :14[[07DotSlash14]]4 10 02https://esolangs.org/w/index.php?diff=72026&oldid=72023 5* 03InfiniteDonuts 5* (+1327) 10 < 1589143003 309523 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1589143372 9441 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589144320 674939 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Remote host closed the connection > 1589144997 70333 PRIVMSG #esoteric :14[[07Esowar14]]4 10 02https://esolangs.org/w/index.php?diff=72027&oldid=71972 5* 03Orby 5* (+67) 10 < 1589145949 235968 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1589146034 338663 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 240 seconds < 1589146117 214635 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1589146533 489582 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589146587 992821 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Remote host closed the connection < 1589146603 875693 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589147054 158007 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :question. how the heck do Game Boy games implement animated tiles? from what I read about the graphics chip, that isn't supposed to be possible without a lot of CPU use < 1589147077 523055 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :yet a lot of game boy games have animated water or other animated tiles, so I'm probably missing something obvious < 1589147152 989544 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :it can't be palette cycling because there are only one and a half tile layers and only one palette per tile layer < 1589147207 923960 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :you'd have to either very quickly find all animated tiles in the tilemap memory and modify them, or quickly rewrite the bitmap of a few tiles stored in the tileset memory, every frame < 1589147223 594179 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :or emulate them with sprites, which also seems impossible with how much these are used. < 1589147401 727988 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :I guess they're probably rewriting the bitmaps in the tileset memory every frame, and design the levels so that there's very few tiles that they have to update < 1589147416 241714 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :but it still seems unrealistic < 1589147425 756322 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :they can apparently animate a lot < 1589147500 125507 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :we talking original gameboy? < 1589147662 305189 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :100 kilometers south of Berlin? so that's close to Dresden probably < 1589147705 914900 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net JOIN :#esoteric < 1589147723 583625 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :wrnog channel for that last one < 1589147792 787232 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 256 seconds < 1589148143 309355 :ais523!~ais523@unaffiliated/ais523 QUIT :Ping timeout: 260 seconds < 1589148989 582451 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Remote host closed the connection < 1589150226 591956 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Does it have pattern table bank switching like NES/Famicom does? I am unsure (I probably read it once but now I forget) < 1589150379 106968 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: I don't remember the details < 1589150411 144150 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: is pattern table bank switching when you switch the entire layer between two pattern tables of 256 tiles each? < 1589150426 364855 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :that's a good idea, that might be what's happening < 1589150499 11741 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1589150499 298792 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :oops. falling into the first shallow sap hole in tree 2 < 1589150512 215266 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :sorry, wrong channel again, < 1589150517 709785 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :chatting in multiple channels is confusing < 1589150928 131255 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Yes, that is what I mean < 1589151207 965225 :pikhq!sid394595@gateway/web/irccloud.com/x-hovhomidionhhtrh PRIVMSG #esoteric :What's hard for them to do with that? Can't you just modify the background map, and simply change which tileset entries get used for certain tiles? < 1589151220 3474 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589151224 240628 :pikhq!sid394595@gateway/web/irccloud.com/x-hovhomidionhhtrh PRIVMSG #esoteric :Maybe I'm missing something, but that's just in video RAM and doesn't need much CPU to do? < 1589151286 172627 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :yeah iirc there's no limit to you altering PPU memory. < 1589151310 164993 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :pikhq; it's in the video RAM, but the CPU doesn't get that much time between frames, it's only like 1 megahertz speed with a Z80-like CPU, and it wants to do all sorts of other computations between frames < 1589151345 909961 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :and each tile pattern is 32 bytes long, and you usually have to update several tiles < 1589151410 911392 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :I don't believe altering the bg tile table takes that much CPU. < 1589151417 163726 :pikhq!sid394595@gateway/web/irccloud.com/x-hovhomidionhhtrh PRIVMSG #esoteric :Erm, I wasn't saying updating the tile pattern. I was saying update the _used tile in the background map_ < 1589151428 208183 :pikhq!sid394595@gateway/web/irccloud.com/x-hovhomidionhhtrh PRIVMSG #esoteric :Which is one byte per tile. < 1589151455 845051 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :pikhq: that's even harder, because you have to find which tiles to update there < 1589151468 518467 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :the same water tiles or muncher tiles usually appear a lot of times < 1589151502 977589 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Ping timeout: 265 seconds < 1589151509 746499 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :animated water usually is done in pretty short order. < 1589151527 89571 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :and the Game Boy only has 8x8 tiles, just like the NES, so there are a lot of tiles to look up < 1589151534 603412 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :8x8 pixel sized tiles that is < 1589151540 563085 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :admittedly it has a smaller screen than the NES < 1589151546 383034 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the NES CPU has a DMA to make it possible to update the sprite table quickly enough during vblank < 1589151561 386032 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but it normally has plenty of time to update backgrounds just via regular CPU instructions < 1589151567 682381 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, I think the GB CPU accesses the PPU memory directly too < 1589151579 970268 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :the GB has DMA as well. < 1589151589 683702 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the PPU on the NES isn't accessed directly, rather there's a specialised memcpy instruction on the CPU for it < 1589151603 897910 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that puts it in a mode which memcpies one byte per cycle into the PPU sprite memory < 1589151616 134075 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :I mean its tile and pattern memory, not the registers. accessing the registers is more complicated. < 1589151619 761508 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(you can't write a memcpy that runs that fast on a 6502 normally) < 1589151624 219592 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :ais523: oh nice < 1589151626 564611 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :I didn't know about that < 1589151642 382870 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :memcopies one byte per cycle? yes, that's impossible on a normal 6502 < 1589151653 543687 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :https://gbdev.gg8.se/wiki/articles/Video_Display#LCD_OAM_DMA_Transfers < 1589151665 988920 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :like by far < 1589151674 600410 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right, I can see why it was invented < 1589151692 911438 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it shouldn't be too hard to add a few extra circuits to make that fast a memcpy possible using the normal on-chip ALU and read and write architecture < 1589151696 495827 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :cool. does the Game Boy has such a feature too? < 1589151702 632140 :imode!~linear@unaffiliated/imode PRIVMSG #esoteric :see above. < 1589151706 201563 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :It isn't a special instruction on the CPU, but rather a function of the APU to implement sprite DMA on NES. (However, the CPU and APU are the same physical chip) < 1589151709 379761 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but, there's clearly no way to do it under software control so you'd need extra hardware to implement it < 1589151772 490069 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, but the problem is that it has to be in the CPU, because those CPUs and PPUs access the memory in a synchronized way, it'd be hard to just do it asynhroniously from a separate device, and it wasn't easy to modify a CPU in such a way back then < 1589151795 189464 :ais523!~ais523@unaffiliated/ais523 QUIT :Quit: sorry for my connection < 1589151795 607581 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: what is the APU? < 1589151807 944537 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1589151821 74350 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :huh, the Game Boy version is rather more advanced than the NES version < 1589151833 981056 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :sure, it's like 5 years more advanced < 1589151844 19841 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :apparently the CPU functions normally during the DMA, except that some of the memory buses are tied up < 1589151854 932819 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :and has a Z80-based chip with an address space larger than 16 bytes < 1589151856 514152 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :b_jonas: The APU is the audio processing unit, although it also includes the OAM DMA and the game controller inputs. < 1589151856 552287 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :um < 1589151861 665575 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :address space larger than 16 bits < 1589151866 274911 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so you can actually run code, just you need to run it from somewhere that isn't busy with the DMA < 1589151900 999734 :pikhq!sid394595@gateway/web/irccloud.com/x-hovhomidionhhtrh PRIVMSG #esoteric :Hmm, that's rather handy. < 1589151902 596398 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in practice the NES never ran out of address space anyway, in most configurations it has tons more address space than physical memory < 1589151907 270753 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: but isn't the APU completely separate from the CPU and PPU and not even running from the same clock speed or something? or is that on a different console? < 1589151943 716521 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although I think it needs to bank-switch on later chips because the address space is split up with certain parts being for certain purposes < 1589151946 176188 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :er what? doesn't the NES only have 16 bits of address space only? < 1589151950 480047 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and you can run out of address space in a particular part < 1589151959 249488 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :b_jonas: No, it uses the same clock speed. < 1589151960 881909 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: yes, but that's 64 KiB which is more than most NES games use < 1589151971 78657 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :zzo38: same clock speed, but not synchronized < 1589151991 254290 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :ais523: oh right, it's the SNES and Game Boy that has game cartridges up to 8 megabyte < 1589152001 836938 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :though 64 kilobytes still sounds pretty small for the NES < 1589152006 569422 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :with most games, quite a lot of that 64 KiB is either mirror ROM / mirror RAM (i.e. two addresses for the same byte in memory), or else open bus < 1589152006 779400 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :don't some NES games have more ROM than that? < 1589152019 71522 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :the later ones that is < 1589152022 381241 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the games with more data stored normally use bank switching < 1589152025 25112 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Yes, it uses bank switching in the cartridge. < 1589152029 57588 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :yes, exactly, bank switching < 1589152034 91072 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :i.e. they have multiple different ROMs in the cartridge < 1589152038 771069 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :which means that they have ran out of address space, just solved it in a reasonable manner < 1589152042 213823 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 QUIT :Remote host closed the connection < 1589152044 879681 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's most important for background and sprite tables, which have a very small maximum size < 1589152109 252823 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :ais523: why? does the NES not have built-in video memory, unlike the GB? < 1589152132 73061 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :oh right, in the NES it's all in the same bus I think < 1589152147 245801 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :same memory < 1589152153 279374 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :so it's usually in the ROM or something < 1589152160 625512 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: it's complicated, there's video RAM for choosing where the sprites are on screen, and where the backgrounds are on screen < 1589152164 256054 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :whereas the GB has dedicated video memory that you have to write I think < 1589152175 95456 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but the pixels that make up a particular sprite, or particular background, are read directly from the cartridge and normally assumed to be in ROM < 1589152182 575650 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :ok < 1589152183 4609 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(of course there's nothing stopping the cartridge putting a RAM there instead) < 1589152199 582978 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and the address space of that is really small < 1589152199 887933 :Antebrationist!ca9a83a4@202-154-131-164.ubs-dynamic.connections.net.nz JOIN :#esoteric < 1589152210 654609 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :The NES does have built-in video memory, although it is not normally used for pattern tables (it is normally used for name tables instead). < 1589152219 703217 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so it uses bank-switching more commonly than other parts of memory < 1589152220 80288 :pikhq!sid394595@gateway/web/irccloud.com/x-hovhomidionhhtrh PRIVMSG #esoteric :(and a few games that do special, clever tricks will do exactly that) < 1589152237 131520 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :(Although there is a signal in the cartridge to specify whether to use the internal video memory (CIRAM) or that in the cartridge.) < 1589152259 205211 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :hmm, it's possible that I'm misunderstanding something and the GB does this too < 1589152296 513355 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :because it only has 8 kilobytes of video memory, which is enough for scrolling the maps, with two bytes per 8x8 block on a 160x130 pixel or something screen, two layers, but way too little for pattern memory < 1589152317 400822 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :so it probably just addresses pattern memory that's usually bank switched in directly from the cart too < 1589152329 890068 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: IIRC, the NES's graphics chip implements a virtual screen that's 512×512, but its internal video memory only has enough space for half that < 1589152347 606006 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :ais523: Yes, that is correct. < 1589152353 3241 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so the cartridge needs to decide whether to make it 512×256, 256×512, or add additional memory of its own to get the full size < 1589152367 114171 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :(Well, kind of. Part of each name table is used for attributes instead.) < 1589152405 204270 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :Attributes are not stored with each cell, but rather each byte in the attribute area stores the attributes for four 2x2 blocks of cells. < 1589152417 258597 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :yes, on the NES you can choose a palette for each 16x16 pixel block < 1589152418 809246 :ais523!~ais523@unaffiliated/ais523 QUIT :Quit: quit < 1589152422 223302 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :but the original Game Boy doesn't have that < 1589152436 748090 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :you can only choose the palette per layer and per sprite (or per two sprites or something, I don't recall) < 1589152457 327826 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :but that's because it can only display four physical colors on the LCD < 1589152467 132625 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :whereas the NES can display much more colors < 1589152484 313382 :LKoen!~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr QUIT :Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.” < 1589152547 726589 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :mind you, I think it's unfair to call that "attribute memory", it's just palette memory, the tile map itself has per-tile attributes in it < 1589152569 351455 :orbitaldecay!~bob@forder.cc PRIVMSG #esoteric :Antebrationist: forder.cc/esowar if you're interested there's a tourney server now < 1589152656 3111 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :also having tilemap first, and attribute memory in more expensive later versions is a pretty popular solution, it's happened for at least three computers: the game boy (if you upgrade to game boy color), the VT100-like terminals (where you just plug in additional RAM), and the Commodore home computers < 1589152674 969800 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :it's a good way to make a newer video chip that is compatible with older modes < 1589152692 454873 :b_jonas!~x@catv-176-63-12-50.catv.broadband.hu PRIVMSG #esoteric :and software that is compatible with older non-color hardware without needing too much extra data < 1589153499 390923 :arseniiv!~arseniiv@95.105.13.161.dynamic.ufanet.ru QUIT :Ping timeout: 258 seconds < 1589154475 877705 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 JOIN :#esoteric < 1589154770 842017 :tromp!~tromp@2a02:a210:ca3:2800:417b:90f8:1834:45d0 QUIT :Ping timeout: 246 seconds