[HN Gopher] Can Doom Run It? An Adding Machine in Doom
       ___________________________________________________________________
        
       Can Doom Run It? An Adding Machine in Doom
        
       Author : signa11
       Score  : 323 points
       Date   : 2022-12-23 04:46 UTC (18 hours ago)
        
 (HTM) web link (blog.otterstack.com)
 (TXT) w3m dump (blog.otterstack.com)
        
       | chrisshroba wrote:
       | We have a brainfuck interpreter in brainfuck. We have Conway's
       | game of life in Conway's game of life. When will we get doom in
       | doom?
        
         | fragmede wrote:
         | as linked upthread: https://hackaday.com/2022/07/12/even-doom-
         | can-now-run-doom/
        
           | anyfoo wrote:
           | As said in that thread, I don't think that counts in the
           | context of this achievement here. It's not a "DOOM
           | implemented in DOOM" thing.
        
         | taneq wrote:
         | https://www.pcgamer.com/doom-hacker-gets-doom-running-in-doo...
         | 
         | I think I even saw this on here a few months back.
        
       | oakwhiz wrote:
       | Ask not what you can run Doom on, instead ask what Doom can run
       | for you
        
       | namuol wrote:
       | > Now we can finally make the ultimate punchline: "Can Doom run
       | it?"
       | 
       | But surely the ultimate punchline is "Can Doom run Doom?"
        
         | weitzj wrote:
         | Sure here :)
         | 
         | https://hackaday.com/2022/07/12/even-doom-can-now-run-doom/
        
           | abudabi123 wrote:
           | Does the Babbage Engine run Doom?
        
           | anyfoo wrote:
           | That's different, though. That's _breaking out_ of DOOM, not
           | implementing DOOM in DOOM. You might argue that the
           | "reference implementation" (i.e. ID's DOOM) is the
           | "canonical" doom and thus this counts but... it's still not
           | "DOOM implemented in DOOM", it's running x86 code.
           | 
           | Not to take from that achievement away, though, I just don't
           | think it fits in the context of this post!
        
             | nathell wrote:
             | Here's some theoretical background on DOOM's Turing-
             | completeness: https://calabi-yau.space/blog/doom.html
             | 
             | In the genre of "an implementation of game X on an
             | accidentally Turing-complete Y", it never hurts to bring up
             | Tetris implemented in the Game of Life:
             | https://codegolf.stackexchange.com/questions/11880/build-
             | a-w...
        
             | verdenti wrote:
             | I don't think that means anything though. Doom the game is
             | not a Turing complete programming language. You could write
             | doom in the underlying C and then have it run on a screen
             | in game but that still wouldn't be doom running doom.
             | 
             | In fact now I've confused myself, what would constitute
             | doom running doom?
        
               | burnished wrote:
               | You have!
               | 
               | I think what is being discovered right now is whether
               | DOOM itself is Turing complete, and if so, can you
               | program DOOM inside of DOOM by making a computer inside
               | of DOOM composed of DOOM monsters and map features that,
               | when ran, recognizably played DOOM.
               | 
               | Sum up: creating a computer inside the game of DOOM and
               | programming that computer to itself play DOOM would
               | constitute DOOM running DOOM
        
               | verdenti wrote:
               | [dead]
        
       | pwdisswordfish9 wrote:
       | It's been known for a while that Doom maps can encode arbitrary
       | logic.
       | 
       | https://doomwiki.org/wiki/Voodoo_script
        
       | hyperific wrote:
       | Researchers discover reality is being run in Doom
        
         | signa11 wrote:
         | doom it !
        
       | roamerz wrote:
       | This reminds me of a dream I had the other nite where I was
       | trying to use a smartphone. I remember getting super frustrated
       | because it was unusably slow.
        
       | neontomo wrote:
       | I've been contemplating lately what types of everyday items could
       | be used to create a simple calculator / full adder, outside of
       | the digital realm. Something like candles would be interesting to
       | experiment with. I haven't thought of how it would technically
       | work yet, but if anyone has ideas please share.
        
         | edgyquant wrote:
         | This is an interesting but niche topic. It's called
         | conservative logic[1] and is typically described via a
         | pool/billiard "circuit." The idea is that it's more expensive
         | but entirely reversible. I find myself wondering what simple
         | bit possible computers primitive man could have come up with
         | (had they dedicated themselves as much as e.g. the pyramid
         | builders)
         | 
         | 1.
         | https://web.cecs.pdx.edu/~mperkows/temp/June16/ConservativeL...
        
           | neontomo wrote:
           | Do you know of any specific examples I can look into where
           | someone built a computer circuit out of normal objects?
        
             | edgyquant wrote:
             | The main example is using billiard balls to act as a
             | circuit (the benefit here is it's entirely reversible.). It
             | has not been done at scale
             | 
             | https://handwiki.org/wiki/Billiard-ball_computer
        
             | bombcar wrote:
             | Searching on "mechanical computers" may provide some
             | things. Stuff could also have been done with water.
        
         | usrusr wrote:
         | Overflowing water pools with barriers operated by level or flow
         | in some other pool would be the intuitive candidate. Very close
         | to popular mental models of electricity and people do like to
         | have fountains around. Fountain/playground intermediates seem
         | to be particularly popular.
         | 
         | It's been baffling me since late childhood that this isn't a
         | thing everybody loved until they became "oh no, not another one
         | of those!" frequent. Remember when fountains of that giant
         | stone sphere slightly elevated by water pressure type weren't
         | definitely not cool anymore yet?
        
         | blippage wrote:
         | Not exactly "everyday", but you can solve differential
         | equations using pulleys and gears.
        
           | bombcar wrote:
           | https://en.m.wikipedia.org/wiki/Mark_I_Fire_Control_Computer
           | Is pretty cool analog computer
        
         | UniverseHacker wrote:
         | Toy model train sets can be Turing complete:
         | http://www.cr31.co.uk/stagecast/trains/tt8_mech_logic.html
         | 
         | I also read a sci-fi book (forgot the title) that involved a
         | pre -tech civilization that had invented computation, and
         | executed code with large crowds of people standing in a grid
         | following set rules to act as logic gates.
        
           | Xophmeister wrote:
           | This is described, IIRC, in The Three-Body Problem[1]
           | 
           | [1]: https://en.wikipedia.org/wiki/The_Three-
           | Body_Problem_(novel)
        
             | mgdlbp wrote:
             | And more generally the concept is known as a China brain
        
         | justsomehnguy wrote:
         | To give use some ideas:
         | 
         | https://www.youtube.com/watch?v=IxXaizglscw
         | 
         | https://patents.google.com/patent/US3314439A/en
         | 
         | And maybe some inspiration:
         | 
         | https://archive.org/details/ExhalationByTedChiang
        
         | thrashh wrote:
         | Well if you connect two candles together ("A" and "B"), that
         | would make a NAND gate already, with lit being 0.
         | 
         | To connect two of these candle NAND gates together, you'd have
         | to make sure it wouldn't burn in reverse though. I'll leave
         | that exercise to the reader...
        
           | FartyMcFarter wrote:
           | It's not clear how two lit inputs results in an unlit output
           | or vice versa with that setup. How do you make that work?
        
           | neontomo wrote:
           | How do you imagine them being connected?
        
         | anyfoo wrote:
         | Relevant xkcd: https://xkcd.com/505/
        
           | GaryPalmer wrote:
           | How do rocks give rise to qualia ?
        
             | taneq wrote:
             | How do atoms?
        
             | neontomo wrote:
             | In the comic, I believe the idea is that this entity is
             | moving the rocks by hand, but following the rules of
             | computing which slowly, but steadily, creates the world as
             | a computer simulation. And in this case, the qualia would
             | be an emergent property of that simulation, but how that
             | happens or whether it happens at all is a much bigger
             | debate...
        
         | rkagerer wrote:
         | I wonder if one could turn crowds of humans into one, eg.
         | engineering flash sales and other social cues they nudge them
         | through gates.
        
           | UniverseHacker wrote:
           | as I mentioned in another reply to this, there is a popular
           | sci-fi book that includes computation with crowds... surely
           | someone on here will mention the title
        
       | pwiecz wrote:
       | I've actually implemented the Game of Life in Doom engine. But
       | I've used a significantly stronger "computation model" - Boom
       | engine, which provided scrolling floors, and more actions being
       | possible to be triggered by monsters.
       | 
       | It sound like an interesting exercise to make a vanilla-
       | compatible variant of the map.
       | 
       | You can find the post about it here:
       | https://www.doomworld.com/forum/topic/131881-conways-game-of...
       | and the code: https://github.com/pwiecz/conway.wad
        
         | justsomehnguy wrote:
         | > provided scrolling floors
         | 
         | Duke3D's Build Engine?
        
           | pwiecz wrote:
           | Boom is "just" pure Doom + some static limits being raised,
           | and a few new types of floors and lines (plus a few other
           | smaller changes) :)
        
             | justsomehnguy wrote:
             | I understand that, but it's more a question of/if using a
             | vanilla engine
        
       | kellyharsh wrote:
       | [flagged]
        
         | [deleted]
        
       | KomoD wrote:
       | Now all we need is Doom in Doom!
        
       | dazzlevolta wrote:
       | Can Doom run Doom?
        
       | 2III7 wrote:
       | But can it run Crysis?
        
       | barbazoo wrote:
       | We're doomed.
        
       | kipi wrote:
       | Shameless self-promotion, I made a similar thing in Quake:
       | https://youtu.be/xVLtnKyRSb4
       | 
       | I love this write-up, especially the interactive diagrams at the
       | end. My vid doesn't go into as much detail on the actual circuit
       | design, but like the article it uses a bunch of BCD ripple-carry
       | adders. For output I use standard 7-segment decoders. As noted in
       | the comments there are faster ways to do logic in Quake which I
       | overlooked in my research, but to my knowledge noone has made a
       | circuit this large before. I've put the source code on github for
       | anyone that wants to take a deeper look:
       | https://github.com/matthewearl/q1logic/
        
         | smcl wrote:
         | Watched and subscribed. I also watched your Quake speedrun vid,
         | really cool stuff!
        
       | shagufta24 wrote:
       | hello
        
       | macawfish wrote:
       | The hell-factory reveal is hilarious to me
        
       | userbinator wrote:
       | _They can also be opened by other monsters (I explain why this is
       | useful later)._
       | 
       | In other words, this device is the analogue of a transistor in
       | electronic machines --- a signal-controlled signal switch. The
       | notion that NAND is the "most basic level" required for digital
       | computation is widespread, but a lower level exists, and this is
       | it.
       | 
       |  _My system is not Turing complete, and it 's because it doesn't
       | have unbounded loops and state. When monsters arrive at their
       | destination, they stay there forever. There's no way to "reset"
       | monsters. This can probably be done by selectively recalling
       | (teleporting) certain monsters so they can act as input to the
       | next iteration of the calculation. This is probably the next step
       | to proving whether or not Doom is Turing complete._
       | 
       | The other person's article linked near the end shows that he came
       | up with the exact same thought:
       | 
       |  _We 'll place a teleporter right in front of them and they'll
       | find themselves locked away in a circuit of our devising spinning
       | a hamster wheel for our benefit. Forever. Just make sure the
       | circuit is placed where the player will always be a specific
       | direction (e.g., south) so they'll forever keep trying to run in
       | that direction._
       | 
       | Thus, the monsters can be thought of as the "electrons" or
       | "working fluid" of this machine.
       | 
       | One of the ideas I've had in my mind but never got around to is
       | to generate a game level that replicates the 6502, which has been
       | reverse-engineered completely:
       | https://davidmjc.github.io/6502/cd.svg
        
         | knome wrote:
         | They could trigger a crushing ceiling when a monsters out-state
         | is consumed, destroying the monster. In nightmare mode, the
         | monster would shortly thereafter be respawned to its original
         | location, ready to take on another value from its inputs.
         | 
         | edit:
         | 
         | >The respawning happens after a randomized time delay (roughly
         | 8 seconds to 5 minutes) -
         | https://doom.fandom.com/wiki/Spawning#Monster_respawning
         | 
         | for particularly subjective definitions of 'shortly'
        
           | Avshalom wrote:
           | if 5 minutes is the upper limit you just have figure out how
           | to delay the next cycle for 5 minutes, giving you a 3mHz
           | clock.
        
         | audunw wrote:
         | > The notion that NAND is the "most basic level" required for
         | digital computation is widespread, but a lower level exists,
         | and this is it.
         | 
         | It's not quite the same I think. With NAND you only need the
         | NAND. With transistors you need two kinds of transistors,
         | N-channel and P-channel, or a transistor and a pull-up/down
         | resistor.
         | 
         | That is, you need one device that conducts with "1" as input,
         | and one that conducts with "0" as input. In this Doom circuit
         | he has a device with both functions built into one device, one
         | side opens on "1", the other opens on "0".
         | 
         | This implementation actually reminds me more of "Petri nets"
         | and asynchronous logic. I wonder if using techniques from that
         | domain would be useful for implementing circuits in Doom.
        
       | moonshinefe wrote:
       | "I wonder what neat trick they'll use to clear the calculator
       | after getting an answer." > Pulls out rocket launcher and just
       | starts shooting the monsters. "Oh."
       | 
       | Had a good chuckle over that one.
        
       ___________________________________________________________________
       (page generated 2022-12-23 23:02 UTC)