0x10c
April 5, 2012 8:05 AM   Subscribe

Notch, the creator of Minecraft has announced his new game: 0x10c. The unique thing about this space simulator is that each player will have a fully functioning emulated 16 bit CPU that can be used to control your entire ship, or just to play games on while waiting for a large mining operation to finish. You can find all the latest information about the game at the Unofficial FAQ
posted by Cloud King (128 comments total) 43 users marked this as a favorite
 
Only notch would start out a space combat game by emulating the ships computer...
posted by empath at 8:08 AM on April 5, 2012 [15 favorites]


Awesome.
posted by edguardo at 8:09 AM on April 5, 2012


So how long before someone uses the "shipboard computer" to run a) Minecraft and b) a sub-game of 0x10c?
posted by EndsOfInvention at 8:11 AM on April 5, 2012 [12 favorites]


So it's like bringing up Paddle War in Commander Keen?
posted by SharkParty at 8:12 AM on April 5, 2012 [2 favorites]


Duct tape. I'm so happy right now.
posted by middleclasstool at 8:13 AM on April 5, 2012


With your 16-bit processor, will I be able to program a GUI in basic that can trace IPs?

Sure!


OK, Notch. I was on the fence until I got here. Now shut up and take my money.
posted by Mayor West at 8:14 AM on April 5, 2012 [4 favorites]


If you're impatient, there are several 0x10c computer emulators already on github.

Building a game around a user-programmable computer is terribly ambitious. There's been programming logic games before, from the beloved Rocky's Boots to new indie games like SpaceChem. But they've all focussed on making the programming itself interactive, graphical, gamey. Notch seems to expect folks just to load up some assembler. I'm hoping he'll make it easy for people to share code modules, so I can swap in an auto-miner from some online marketplace or the like.
posted by Nelson at 8:14 AM on April 5, 2012 [1 favorite]


once assembly language programming is gamified, it is all over.

Then it's been over for a while.
posted by DU at 8:15 AM on April 5, 2012 [3 favorites]


When my college Computer Engineering professor told us that learning assembly would come in handy 'some day', I doubt that this is what she had in mind.
posted by muddgirl at 8:15 AM on April 5, 2012 [2 favorites]


I'm still trying to work out how to pronounce the title. "Zero times ten to the power of c"?
posted by fight or flight at 8:15 AM on April 5, 2012


I'm still trying to work out how to pronounce the title. "Zero times ten to the power of c"?

Oh ecks ten see
posted by empath at 8:17 AM on April 5, 2012


Not only is the name unpronounceable, it's a PITA to write (0x10c is more proper HTML) and it's awkward to search for in many full text engines. Notch has always been brilliant at marketing.
posted by Nelson at 8:17 AM on April 5, 2012 [5 favorites]


(well really 2 c, i guess).
posted by empath at 8:17 AM on April 5, 2012


once assembly language programming is gamified, it is all over.

I've wanted to do this for a while.
posted by a snickering nuthatch at 8:18 AM on April 5, 2012


(hex) "ten to lightspeed"
posted by ConstantineXVI at 8:21 AM on April 5, 2012


does 0x mean hex? Then 10 is sixteen, no?
posted by empath at 8:21 AM on April 5, 2012


Oh man, I wish he'd used MMIX! Think of all the gamers that would then be sucked into Knuth's magnum opus.
posted by DU at 8:22 AM on April 5, 2012 [2 favorites]


The interesting thing will be to see who writes the first NES and SNES emulators for it.
posted by curious nu at 8:23 AM on April 5, 2012


I'm still trying to work out how to pronounce the title. "Zero times ten to the power of c"?

"0x" isn't "zero times", it's a prefix that indicates the number that follows is in hexadecimal.

(hex) "ten to lightspeed"

It's the hexadecimal number "C", not the speed of light. (Using the speed of light as an exponent doesn't make any sense, the value changes depending on what units you're using.)

And yeah, 0x10 isn't ten, it's sixteen.

In decimal it's 1012, which makes sense if you read the backstory.
posted by cdward at 8:23 AM on April 5, 2012


Erm. 1612.
posted by cdward at 8:23 AM on April 5, 2012


yo dawg i heard you like games so i put a computer in your computer so you can game while you game
posted by edguardo at 8:25 AM on April 5, 2012 [20 favorites]


The unique thing about this space simulator

Not unique, as anyone who has played Core War any time since 1984 will tell you.
posted by GallonOfAlan at 8:26 AM on April 5, 2012 [1 favorite]


Wait wait wait, this is real? I was completely convinced this was an April Fools joke.
posted by ook at 8:27 AM on April 5, 2012


or are you all being subtle and playing along and now I'm the oaf who's blown it
posted by ook at 8:27 AM on April 5, 2012


It truly is a terrible name.
posted by Edogy at 8:28 AM on April 5, 2012 [2 favorites]


I used to be able to convert between decimal, binary, and hex in my head. I never thought that skill would come in handy again.
posted by Mercaptan at 8:29 AM on April 5, 2012


Core War was a space simulator?
posted by hellphish at 8:30 AM on April 5, 2012


Anyone who actually "played Core Wars" will tell you it's not a game so much as an exercise in thinking about programming. There's a whole lot of toys that have been developed where you pit programs against each other in some sort of arena.. Robot AIs were popular in the 80s, for instance. None of them have been mainstream successes or particularly fun. That's what's so ambitious about 0x10c, trying to integrate programmability into a game with an immediate audience of millions.

There's a lot of other stuff Notch is trying to do, too. "Elite MMO" is one of the holy grails of online gaming, there's only one example of a major success. This game will live or die on the quality of its space simulation, and economics simulation, and graphics, and the fun of the actual gameplay. Minecraft tackled a whole lot too and was a huge success, so I'm hopeful, but in the end I think the programmable computer will only be a small part of what makes the game live or die.
posted by Nelson at 8:32 AM on April 5, 2012 [2 favorites]


The ship computer will be as necessary to play as redstone is in Minecraft.
Nobody even needs to "learn" its assembly language, they can just copy others if you want to do stuff with it.
Or are all of you saying you figured out how to make elevators with redstone on your own?
posted by Threeway Handshake at 8:32 AM on April 5, 2012 [5 favorites]


In decimal it's 1012, which makes sense if you read the backstory.

Okay, that makes sense:

In 1988, a brand new deep sleep cell was released, compatible with all popular 16 bit computers. Unfortunately, it used big endian, whereas the DCPU-16 specifications called for little endian. This led to a severe bug in the included drivers, causing a requested sleep of 0x0000 0000 0000 0001 years to last for 0x0001 0000 0000 0000 years.

0x0001 0000 0000 0000

For people that don't know how to read non-decimal numbers:

From right to left, each digit in the number represents N * B^P where N is the number in that place, B is the base of the system, and P is where each digit is counting from the right (starting with 0)..

so 00001 in base 16 (hexadecimal) is 1*16^0 --- one. 000020 is 2*16^1 --- thirty-two 000021 is just thirty-three. and 0x0001 0000 0000 0000 is 16^12.... and since you need more than 10 numerals to represent hexedecimal numbers, A-F are used to expand it... so 10^c is the hexidecimal notation for raising 16^12.
posted by empath at 8:33 AM on April 5, 2012 [1 favorite]


It is a much better name than "New Project (5)" like he originally wanted.
posted by Threeway Handshake at 8:37 AM on April 5, 2012 [4 favorites]


Let's not forget that Minecraft introduced to a whole mess of kids concepts of logic and programming through its redstone circuits. I think the educational value of Minecraft has been largely overlooked (except by the people who play it) and I think that the instant popularity this game will have, combined with this emulated CPU is going to make for a very exciting educational opportunity.
posted by hellphish at 8:38 AM on April 5, 2012 [1 favorite]


I was confused for awhile till I actually visited Notch's website. 0x10c is very, very different from 0x10^c
posted by muddgirl at 8:38 AM on April 5, 2012


No, Core War wasn't a space simulator, it was a game with a programmable virtual machine in it.
posted by GallonOfAlan at 8:39 AM on April 5, 2012


Notch is the hero of all my children but particularly the oldest who is also into programming. This game is going to blow his mind.
posted by DU at 8:43 AM on April 5, 2012


Meh. His work on Minecraft, apart from being accidentally brilliant at marketing, was pretty sub-par. It didn't become compelling in any sense as a game (and it's still pretty bad at that) until Jeb came in to clean up his mistakes. I'm not holding out high hopes for this one.
posted by codacorolla at 8:44 AM on April 5, 2012 [1 favorite]


Shut up and take my money.
posted by Aquaman at 8:45 AM on April 5, 2012


Is there any reason for believing Jeb will be barred from working on 0x10c?
posted by DU at 8:46 AM on April 5, 2012


I like the pronounciation 'Zero Existence'.

If it were anyone but notch, this would be instantly dismissed as risible. But the fact that he's amassed basically all of the software hacker nerds, maker geeks, and frustrated chip designers /already/ means that this is going to be interesting.

There are assemblers and simulators written in C, Javascript, Ruby, Python, and Go. I know of at least one effort to create a physical DCPU using TTL chips. It is only a matter of (a very brief) period of time before there's an OS, a windowing system, TCP/IP, and then on to the good stuff, like distributed lisp compilers and Unix ports.

1988, and the 16-bit world, was an extremely innovative and fast-moving time in computer science history. It's comparable to the time when you could expect to open up your car's hood and instantly see what's wrong, and fix it yourself -- with all of the attendant tinkering, shade tree mechanics, and creative optimizations that entailed.
posted by felix at 8:47 AM on April 5, 2012 [7 favorites]


And for the minecraft haters: the fact that it didn't carry a lot of the 'game' genes in the traditional sense was a pretty big draw for a lot of people, and opened up a lot of doors. Instead of worrying about quest lines and power ups and experience-to-level curves: here you are, alone in the wilderness, with your hands. The sun will set soon. Good luck. POWERFUL STUFF.
posted by felix at 8:50 AM on April 5, 2012 [10 favorites]


To be clear - This game isn't out yet?
posted by Bonzai at 8:51 AM on April 5, 2012


Alas no.
posted by adamdschneider at 8:53 AM on April 5, 2012


I don't know why people have such reverence for Notch. He's consistently proven himself incapable of coding, design, marketing, community relations, running a business, really everything he does is unexceptional. These bedroom indie developers don't deserve the worshipping they get from fans. Minecraft is fun as hell, but it was a concept he copied from Infiniminer, and just got lucky enough for it to go 'viral'. Dwarf Fortress is fun as hell but that's despite the seeming best efforts of Toady One to ruin it.
posted by a debt owed at 8:55 AM on April 5, 2012 [5 favorites]


april fools/mars effect

as if we all just weren't mathematical patterns and information theory rather than subjective interpretations of uncertainty... making this inevitable in any universe?

i think it gets to the notion of ad hoc 'rules' and then asking what is permissible...
posted by kliuless at 8:55 AM on April 5, 2012


The problem with Minecraft, to me, is that Notch lost interest in the game sometime before beta release, and all of the alpha content that I was willing to forgive while he was still working on it (like the tile set, animations, # of enemies, combat) hasn't been changed at all.

Another issue (and this is more personal, I bought the game when it was in alpha shortly after the farming update, so I certainly got my money's worth) is that the game has such huge potential and it feels like it was squandered. I would have loved to see unique biomes, unique flora/fauna, more interesting combat/loot, some type of quests, but instead we got dogs and villagers that don't do anything.

And finally, I feel like the game doesn't try to be fun or enjoyable - the combat isn't fun, the gathering of materials to build anything feels like a chore, there is nothing interesting to find by travelling in the world and even things like minecarts and boats seem like little toys
posted by Cloud King at 8:57 AM on April 5, 2012 [2 favorites]


Is that (distributed (lisp compilers)) or ((distributed lisp) compilers)? They sound interesting in different ways.
posted by DU at 8:59 AM on April 5, 2012 [2 favorites]


It truly is a terrible name.

Oh, I don't know, I kind of like it.
posted by 0xdeadc0de at 9:00 AM on April 5, 2012 [22 favorites]


Damn. I just started playing Dwarf Fortress.
posted by swift at 9:02 AM on April 5, 2012 [1 favorite]


# of enemies, combat) hasn't been changed at all.'
You might want to load it up and get the update (and make a new map). I just updated it the other day and played for the first time, and the first thing I saw was a cheetah. Tons of stuff has been added.
posted by Threeway Handshake at 9:03 AM on April 5, 2012 [1 favorite]


There's this kind of fundamental disconnect between Mojang and their community. Mojang seems to think that people want all this adventure content, levels and villages and quests and dragons and all that. The community has always treated that stuff as a distraction from what they actually want to do, which is build pretty things with friends. What they should be doing is expanding on the game in an open-ended way, because that's what makes the game popular, the ability to create your own little world from scratch. Instead the community gets dogs and record players.
posted by a debt owed at 9:03 AM on April 5, 2012 [3 favorites]


There's this kind of fundamental disconnect between Mojang and their community. Mojang seems to think that people want all this adventure content, levels and villages and quests and dragons and all that. The community has always treated that stuff as a distraction from what they actually want to do, which is build pretty things with friends. What they should be doing is expanding on the game in an open-ended way, because that's what makes the game popular, the ability to create your own little world from scratch. Instead the community gets dogs and record players.

And a few comments above yours is a complaint that there aren't enough dragons and combat animations.

Personally, I think they should focus on one or the other: either make the game for people who like TOTALLY SWEET GRAPHICS, or cater to the "hacker mindset."
posted by Threeway Handshake at 9:07 AM on April 5, 2012


I don't know why people have such reverence for Notch. He's consistently proven himself incapable of coding, design, marketing, community relations, running a business, really everything he does is unexceptional.

Um, he's made $80M on a game that millions of people love, including myself. I wish that I was that unexceptional.
posted by octothorpe at 9:07 AM on April 5, 2012 [20 favorites]


All that said, I do think the concept of the game and the idea of crafting items was a very good one. A lot of the early ideas he had were also very good. Really, my biggest issue is that he just lost interest, and it seems clear that he's working very hard on the new game, at least right now
posted by Cloud King at 9:09 AM on April 5, 2012


I'm betting that patches to port the Linux kernel to the dcpu are already in place.

If I can use this as a bizzare interface to do all of my sysadmin work, then the monthly fee is totally worth it - as long as it's more functional than psdoom
posted by MysticMCJ at 9:11 AM on April 5, 2012 [1 favorite]


Is anybody working on an LLVM backend for the CPU?
posted by destrius at 9:21 AM on April 5, 2012 [1 favorite]


I love that Notch can now experiment on this crazy thing which has huge potential but may be doomed to failure but now he can at least give it a try because damn it he's Notch
posted by East Manitoba Regional Junior Kabaddi Champion '94 at 9:30 AM on April 5, 2012 [1 favorite]


I'm with DU, if he'd used the MMIX that would have been completely awesome.

OTOH, it sounds fun if he can make it work. Hoping he'll get an Alpha out soonish.
posted by sotonohito at 9:34 AM on April 5, 2012


MysticMCJ: "I'm betting that patches to port the Linux kernel to the dcpu are already in place."

Need a C cross compiler first. Probably best to start with µCLinux which already runs on 16-bit microcontrollers.
posted by mkb at 9:38 AM on April 5, 2012


Anyone interesting in a minecraft-y space game that has nothing to do with learning programming might be interested in Blockade Runner.
posted by Wretch729 at 9:41 AM on April 5, 2012 [3 favorites]


I still haven't gotten to the final boss-fight in Emacs yet, so I think I'll just stick with that for now.
posted by Zed at 9:42 AM on April 5, 2012 [10 favorites]


Emacs is more of a sandbox game where each sand grain has it's own command handler.
posted by DU at 9:50 AM on April 5, 2012 [3 favorites]


I still haven't gotten to the final boss-fight in Emacs

I heard it's a hidden MS Word mode that uses vi keybindings.
posted by swift at 9:57 AM on April 5, 2012 [4 favorites]


and it's awkward to search for in many full text engines.

Huh? The first page of a Google search for "0x10c" is nothing but Notch's game.
posted by straight at 10:02 AM on April 5, 2012


There's this kind of fundamental disconnect between Mojang and their community. Mojang seems to think that people want all this adventure content, levels and villages and quests and dragons and all that. The community has always treated that stuff as a distraction from what they actually want to do, which is build pretty things with friends.

Yeah, out of the 5.5 million people who've bought the game, probably only about one or two million people--three million, tops--enjoy the adventure mode where you have to explore dark caves and build shelters to keep the zombies out at night. Everybody else just wants to build stuff.

It's a waste. Nobody's interested in creepers or exploring procedurally generated terrain. Infiniminer had all that stuff.
posted by straight at 10:10 AM on April 5, 2012 [1 favorite]


Has there ever been a space game with realistic gravity and trajectory simulation? Actually getting into orbit around a planet seems like it would be extremely difficult without a computer to do it for you. If this game is going to be really hard sci fi, I expect a lot of lives to end drifting into the between with no fuel left.

Also, from the unofficial faq:
0x10c lore states the DCPU-16 calls for little endian, but your specification file describes a call for big endian.

Well, oops! :D
I want to believe that's an in-universe deliberate error.
posted by lucidium at 10:15 AM on April 5, 2012 [1 favorite]


Really, my biggest issue is that he just lost interest, and it seems clear that he's working very hard on the new game, at least right now

He hasn't really worked on minecraft in quite a while. [On searching, it's since December 2011. That was a specific decision -- he handed off control to Jens (and the rest of Mojang, I believe) so he could start working on other stuff. And by most accounts, the game has improved greatly from that decision, between bug fixes and add-on support and general improvements/additions to the game.
posted by inigo2 at 10:26 AM on April 5, 2012


from preliminary descriptions of the game it looks like you won't run out of fuel, and there will be 'cheat mode' things like hyperspace/FTL travel as well. There would pretty much have to be a cheap/free source of incredible power and some correspondingly great source of human g-force-resistance, considering it took around 3 days for our manned missions to get from here to the moon.

I bet the computers will come with a 'starter kit' of programs ('go here' 'get into orbit' 'mine for treasures' etc.) so that even non-hackers can have fun with the game.
posted by felix at 10:31 AM on April 5, 2012


A few thoughts:

I played the hell out of Elite on my old Commodore 64 as a teen, and I've been looking for a good hardcore space sim ever since.

Minecraft is the only game I play, and has been for about a year and a half. It hits so many sweet spots with me, it's not even funny. Mostly, I play single player. I don't mind being 'forever alone' -- I've got a bajillion square miles to explore! And I can do that, or build something, or hunt creepers, or go fishing, or figure out how redstone works, among many, many other things, and that's just the single player mode. If the Mojang guys never get around to putting all the things I want in the game, I'm sure the modders will take up the slack, down the line.

If this new space sim of his recaptures that same sense of freedom and mod-friendly openness, plus throw in some Newtonian physics, Notch can be silent and accept my currency.
posted by KHAAAN! at 10:32 AM on April 5, 2012 [3 favorites]


lucidium: "Has there ever been a space game with realistic gravity and trajectory simulation? Actually getting into orbit around a planet seems like it would be extremely difficult without a computer to do it for you. If this game is going to be really hard sci fi, I expect a lot of lives to end drifting into the between with no fuel left."

Yes! Kerbal Space Program! You can even attempt a Mün-shot. There's a free demo.
posted by mkb at 10:33 AM on April 5, 2012 [3 favorites]


I'm still waiting for Noctis V.
posted by Skwirl at 10:39 AM on April 5, 2012 [4 favorites]


It'd be great to see the computers come with a kit of programs-as-tutorials which make the game playable but give non-programmers some obvious potential points of improvement to get them started. I suspect it's more likely that the community will provide that though.

> mkb, that looks awesome. Thanks!
posted by lucidium at 10:44 AM on April 5, 2012


Given the enormous infowar possibilities involved in game, trusting an executable given to you by anyone other than your spouse (and maybe not even then) sounds really dangerous. Maybe guildmates might trust one another, but dang. When you see the sort of treachery involved in EVE Online, dang...

That Doom port to play while you mine? Yeah, it has a tiny bit of hidden and obfuscated code so the person who wrote it can disable your ship for easy killing whenever they want.
posted by sotonohito at 10:51 AM on April 5, 2012 [3 favorites]


Oh man, Noctis. Last I checked the developer was still deep in the rabbit hole of developing L.in.oleum, his custom assembler language that he felt he had to create so he could then write Noctis V in it. It's a great example of yak shaving, but also sad. I believe Noctis V has been "in development" for 12 years now. Maybe he's moved on and found some peace.

There's something about these obsessively detailed and unique indie games, it's a bit like outsider art from people who have religious visions. Dwarf Fortress, Noctis, Minecraft, Minter's games like Space Giraffe... They come from developers who are so deeply into their own world that they have to invent not just a game, but their own way of writing games. It's a very idiosyncratic and hard way to do things, the miracle is when it works and we actually get a playable game.

The commercial world doesn't allow too much eccentricity; idiosyncratic geniuses like Wright or Molyneux get reigned in and agree to a tradeoff of doing something big vs. something so intensely personal and unique. That's what makes Minecraft so interesting, because it's yet another indie weirdo game with a bunch of rough edges and yet it's sold 5 million copies and launched a whole new genre of gaming.
posted by Nelson at 10:58 AM on April 5, 2012 [1 favorite]


Yeah I was going to mention Orbiter as well. I used to be really into it and was pretty active in the Orbiter community as well. A couple of times I actually stayed up all night until the sun came up flying different "missions" with it. I certainly felt a big sense of accomplishment the first time I actually managed to launch into orbit and then rendezvous and dock with the International Space Station.
posted by smoothvirus at 12:00 PM on April 5, 2012 [1 favorite]


There's Exoflight. Unfinished, and not a game, but it does simulate space travel in the solar system, and is somewhat programmable.
posted by RobotVoodooPower at 12:03 PM on April 5, 2012 [1 favorite]


People constantly put down Notch as a hack, but consider this. In the first year or so, a flurry of Mine-a-likes came out, whose programmers invariably promised that their versions would be awesomer than Minecraft in every respect. And yet, what happened? Every one of their efforts foundered, because they (and sadly, Infiniminer) lacked the thing that Minecraft has in spades.

Beauty.
posted by xigxag at 12:15 PM on April 5, 2012 [3 favorites]


Wii sports must be the most beautiful game ever made with its 76 million+ sales.
posted by Pyry at 12:21 PM on April 5, 2012


I would be more excited about the 16-bit CPU if instead of sitting down and writing code, the assembly and logic with respect to controlling the ship was gamified in a Rocky's Boots graphical, accessible kind of way. Kid friendly, you know? That would really be something, while being in line with the Legos philosophy of Minecraft that made it so appealing.
posted by naju at 1:23 PM on April 5, 2012


Wii sports must be the most beautiful game ever made with its 76 million+ sales.

What exactly is wrong with Wii sports? People play it at parties and in bars.
posted by Threeway Handshake at 1:31 PM on April 5, 2012 [1 favorite]


Pyry, I'm not saying Minecraft is beautiful because it sells a lot. I'm saying it sells a lot because among other things, it is viewed by many of its fans as a beautiful game. A subjective opinion, but widespread among the fanbase. The game's "reddit" is often filled with shots of Minecraft sunrises, sunsets, moonrises, verdant forests, jungles and mountains, just pure eye candy. Obviously, that's one of those things you either feel or you don't, but it's felt by enough people to have made the game a runaway phenomenon despite its many quirks, bugs, lack of a progressive game narrative, etc.

If someone else would come along with a similarly lovely and engaging set of virtual lego blocks, it would probably be just as much of a success. But that hasn't happened yet after a couple of years, and this is, IMO, a testament to Notch's talent.
posted by xigxag at 2:15 PM on April 5, 2012 [1 favorite]


Kid friendly, you know? That would really be something, while being in line with the Legos philosophy of Minecraft that made it so appealing.

Accessibility to the relatively-uneducated user and proximity to basic computer functioning are opposite ends of a spectrum, it seems.
posted by edguardo at 2:20 PM on April 5, 2012


No interrupts yet so no input but he has output via memory map. In the shot you can see he is using 0x8000 as the start of video memory and using his set PC,nextchar trick instead of a JMP.
posted by Ad hominem at 2:26 PM on April 5, 2012


He's consistently proven himself incapable of coding, design, marketing, community relations, running a business, really everything he does is unexceptional.

This is so perfectly stupid that I almost want to frame it.
posted by empath at 2:32 PM on April 5, 2012 [10 favorites]


I'm a little concerned about the monthly subscription plan - I bought Minecraft, in alpha, because I could see the potential of it, I could imagine all the cool things that would be added during development, and "Free updates forever for €10" sounded like an extremely fair deal.

If I'd had to pay by the month for Minecraft, I would have quit after a month or two after getting sick of the bugs and slow pace of development. I don't know why notch is moving away from the business model that was such a roaring success.
posted by Jimbob at 3:28 PM on April 5, 2012


One thing I didn't like is his mention of gravity. If there's one thing I don't look forward to, it's doing orbital mechanics on a CPU that doesn't even have floating point support.

(My only experience with orbital mechanics was the ICFP 2009 contest, where I failed miserably on over half of the tasks.)
posted by ymgve at 3:48 PM on April 5, 2012


assembly and logic with respect to controlling the ship was gamified in a Rocky's Boots graphical, accessible kind of way

I'm not familiar with Rocky's Boots, but in my experience graphical programming languages are never a good idea. They make trivial things look easy (without actually making them any easier), while making anything beyond that impossibly difficult.

If you don't know that programming is supposed to be scary, there's no problem.
posted by cdward at 4:06 PM on April 5, 2012 [7 favorites]


If 0x10c ends up even 1% as popular as Minecraft, someone is going to write a compiler for at least one popular language that puts out 0x10c code. Hell, I bet there are already people trying to work out how to make a C (or whatever) to 0x10c compiler out of redstone.
posted by A Thousand Baited Hooks at 4:27 PM on April 5, 2012 [2 favorites]


If there's one thing I don't look forward to, it's doing orbital mechanics on a CPU that doesn't even have floating point support.

Well, a 16-bit integer CPU did get us to the moon, at least.

I'm not terribly excited about this yet-another-virtual-CPU, but apparently Notch is excited about it, having probably done this kind of thing for the first time. If his enthusiasm rubs off on young-uns and gets them interested in programming orbital guidance routines in assembly language using fixed-point math, I can think of worse effects.
posted by RobotVoodooPower at 4:42 PM on April 5, 2012 [1 favorite]


But now, what I'm imagining with 0x10c is that you have ship to ship communications. And possibly viruses. And now the possibilities just EXPLODE!

Heh, maybe this is just what Notch does best - the best games are truly meta-games - not just what is there, but what can be, adding a little imagination. In many ways, Minecraft right now is going in the right direction - they've chosen to concentrate on adding mod support which makes so much sense on so many levels - the rivals to minecraft in this way have already been beaten - write a minecraft clone and minecraft+mods does everything you want that to do and more.
posted by BigCalm at 4:50 PM on April 5, 2012 [1 favorite]


If 0x10c ends up even 1% as popular as Minecraft, someone is going to write a compiler for at least one popular language that puts out 0x10c code. Hell, I bet there are already people trying to work out how to make a C (or whatever) to 0x10c compiler out of redstone.

Nah, you just build an LLVM backend for the 0x10c cpu. Then anything with an LLVM front end implementation (which is a lot of languages, if you only need toy-level compliance) can be targeted at the machine.
posted by Netzapper at 4:53 PM on April 5, 2012


I'm not terribly excited about this yet-another-virtual-CPU, but apparently Notch is excited about it, having probably done this kind of thing for the first time.

I remember about two weeks ago now, notch started asking questions on Twitter about the 6502, and how he was trying to write an emulator for it. Then he suddenly declared that, actually, the 6502's OP codes were stupid and he was inventing his own CPU. So here we are. But we could have had 6502-powered ships.
posted by Jimbob at 5:18 PM on April 5, 2012 [1 favorite]


When somebody ports either one of these to 0x10c or the original source code they were based on (previously), then it's on.
posted by scalefree at 7:10 PM on April 5, 2012


I cannot wait to see somebody pull off a galaxy-spanning botnet fleet in this.
posted by jason_steakums at 8:33 PM on April 5, 2012


actually, the 6502's OP codes were stupid

Aw. They weren't stupid; elegant, subtle, and complex, maybe. What a feeling of enlightenment when teenage me understood the difference between indexed indirect and indirect indexed.

And "no JMP or RET", pfft. I'll bet every DCPU16 assembler will implement them as pseudo-instructions.
posted by We had a deal, Kyle at 10:12 PM on April 5, 2012 [1 favorite]


Finally the skills of my youth are useful again!
posted by inpHilltr8r at 12:41 AM on April 6, 2012


64k seems too small to do a great many things. For example, I play EVE Online and I am certain that my daily transaction log is more than 64k. It's probably not even large enough to handle my outstanding market orders and contracts. Even a simple chat program would have problems since the scrollback buffer would only be able to hold a few minutes of enemy intel.

I guess the cpus will have to stick to firing the rockets, not interacting with the social and economic aspects of the game.
posted by ryanrs at 1:30 AM on April 6, 2012


64k seems too small to do a great many things.

Maybe he'll implement memory paging... or virtual disc drives.
posted by Jimbob at 2:35 AM on April 6, 2012 [1 favorite]


It would be cool if ship-to-ship communication relied on a radio simulation. Like, an actually simulated chunk of spectrum. This would require substantially faster virtual cpus and server-side execution to cut down on bandwidth to the clients, but it would be pretty neat.

You'd end up with a couple people who wrote the signal processing code and thousands who copied it. So it's be a pretty accurate simulation.
posted by ryanrs at 5:02 AM on April 6, 2012


So will the emulated computer have limited access to virtual hardware input from the virtual spaceship? Just the "radar" or "sensor" data?

Or will it have direct access to the game code and libraries, such that any value in the game could be referenced?
posted by edguardo at 7:02 AM on April 6, 2012




It's now the year 281 474 976 712 644 AD, and the first lost people are starting to wake up to a universe on the brink of extinction, with all remote galaxies forever lost to red shift, star formation long since ended, and massive black holes dominating the galaxy.

Woah. Just recently (like a couple months ago) I watched this video lecture by Lawrence Krauss discussing how other galaxies will eventually move so far away that light they emit will never reach earth, eventually it will just be the milkyway/andromeda combination, plus other galaxies in the local group. I suppose they will have merged by then.

Anyway, quite fascinating premise.

I'm not really sure I get the point of having a specific, 16-bit CPU.
64k seems too small to do a great many things. For example, I play EVE Online and I am certain that my daily transaction log is more than 64k.
Real 16 bit CPUs would often use register pairs to address memory. The 286 used a 16 bit 'CS' (for code segment) and a 16 bit 'IP' register to store the current location. There were other segment registers, so you could have one segment for data, one for your stack and one for 'E' something (CS, DS, SS and ES)

That doesn't mean you got 32 bit addressing at first, the segments were actually overlapping. It's all quite complex

Anyway, the chip in this game actually has 128k of memory addressable, because you address everything by 16 bit block. By itself, the chip itself is kind of boring actually.

What will make it interesting is how you connect the 'ship' to the chip. since there are no interrupts, do you just wire up various devices on the ship directly to RAM?
posted by delmoi at 8:32 AM on April 6, 2012


So I guess this isn't going to be very easy for someone who knows jack about programming, huh?
posted by adamdschneider at 11:13 AM on April 6, 2012


I don't know, adamdschneider. On the one hand, assembly language is considered difficult by most programmers because each line of code does so little, but on the other hand, it's primitive enough to be simple. Especially for this processor, which is simple to the point of being simplistic. You've got some memory, some registers, some arithmetic operations. Not a lot to it. Programming for the web, by comparison, requires knowledge of an absurd amount of obscure lore. So you might be surprised.
posted by chrchr at 11:48 AM on April 6, 2012


Is there a dead simple guide to assembly? Shot in the dark, I know.
posted by adamdschneider at 11:53 AM on April 6, 2012


@adamdschneider: On the other hand, you should be able to play without any programming at all. You just run the risk that your computer might be subverted.

On the gripping hand, I doubt any but the most paranoid will never run anything but their own homebrew. There will always be some really nifty program you want but don't want to write yourself. I suspect there will be a lot of metagaming going on, websites claiming to vet programs, doubts about their trustworthiness, etc.

Fun stuff all around.
posted by sotonohito at 1:25 PM on April 6, 2012


You just run the risk that your computer might be subverted.

To be quadruple clear here: The computer in the game, or more accurately the software you load onto it, isn't likely to be able to infect your actual host/physical computer is it? That's a whole 'nother layer of subversive ways to win....
posted by RolandOfEld at 1:52 PM on April 6, 2012


adamdschneider: "Is there a dead simple guide to assembly? Shot in the dark, I know."

Not really. Assembly language is different for every processor architecture, and getting the code into your system to run is tricky on its own! When I was in school, we had ColdFire evaluation boards with a built-in debugger that we could use to upload text files with assembled code in S-file format.

Confused yet? This is relatively simple compared to manually toggling in code on a switch panel or something.
posted by mkb at 2:10 PM on April 6, 2012


The computer in the game, or more accurately the software you load onto it, isn't likely to be able to infect your actual host/physical computer is it?

To be 100% clear, there is absolutely no chance of this happening.
posted by empath at 2:46 PM on April 6, 2012 [2 favorites]


getting the code into your system to run is tricky on its own!
How will programs be loaded into DCPU-16's memory? Or in the game for that matter?

Someone will have to write a loader. ;) There will be floppy disks in the game if you like artifacts, or a radio array.
So it sounds like you'll start off with a completely empty computer, and will have to toggle a loader in by hand. Sure, people like me might enjoy this the first time 'round, but it might get a little bit frustrating. Unless, when you show up in the game, someone friendly comes over and says "Here's the loader code:" and hands it to you on a printout, you'll have to leave the game immediately and go find a loader on the internet.
posted by BungaDunga at 3:31 PM on April 6, 2012


Thanks empath. This wheels within wheels thing is a but much at times.
posted by RolandOfEld at 3:48 PM on April 6, 2012


To be 100% clear, there is absolutely no chance of this happening.

Unless there's a bug in the interpreter. Flash and Java are virtual machines but we all know how invulnerable they are...
posted by BungaDunga at 4:06 PM on April 6, 2012 [2 favorites]


BungaDunga: "Unless there's a bug in the interpreter. Flash and Java are virtual machines but we all know how invulnerable they are..."

Think of it more like an instance of SNES9x than a JVM.
posted by mkb at 4:49 PM on April 6, 2012


I'm far from a security expert, but I'm writing a game that has a few similar elements and I can think of a couple of ways this could be vulnerable.

First, if as BungaDunga says there's a bug in the interpreter, e.g. the 0x10c processor is able to access areas of memory that it's not supposed to (so that a program running in the emulated computer could modify the game's code). But it shouldn't be too hard to make sure that the interpreter doesn't allow this.

Second, if there are bugs in the game code that produce unintended behaviour in certain game states. A malicious programmer could produce code that operates purely within the parameters of the 0x10c processor but that tends to produce game states that are bugged in some exploitable way - most obviously a buffer overrun of some kind. To some extent this is a problem with any program that allows user input, but most games don't include an emulated processor that runs arbitrary code. Depending on how the game is designed (and how good the testing is) this could be easy for Mojang to prevent, but might not be.
posted by A Thousand Baited Hooks at 8:39 PM on April 6, 2012


I'm certain that there will be bugs in the virtual machine that people will exploit in awesome ways for nefarious purposes. It seems unlikely that any of this is going to have real world consequences, but one never knows.
posted by chrchr at 10:11 PM on April 6, 2012


I don't know, adamdschneider. On the one hand, assembly language is considered difficult by most programmers because each line of code does so little, but on the other hand, it's primitive enough to be simple.
Adding to that assembly language isn't that much like other programming languages. You're manipulating only a finite set of 'things' (registers, instructions, and points in RAM) at once. In a 'normal' program, you can have a practically unlimited number of things that you might have to keep track of (on the order of 264, in theory). Each of the 'things' in a 'regular' is actually an address in memory. But in an assembly program you can only work with a few at once.

The other huge difference is that they have very simple syntax. Essentially it's like

DO THIS
DO THIS
A: DO THAT
DO THAT
DO THIS
DO THE OTHER THING
JZ A  // (which means if you ended up with zero after doing the other thing, go back to the the line 'A: DO THAT') 
In a 'normal' language you might have something like

obj other<T<Integer>> : AbstractThing<T>{
   static main(n){
    ((x,y) - > that( this.that(x^4+ that.other().thing(y().3() >> (n & 0xF00F))))(this,() -> new other(),n);
  }
  other.3 = () -> T(3); 
}
And the thing is, you miss one single character, you get a 'syntax error', sometimes not in the spot you actually mess up. It's even possible to have mistakes like using "that.other.thing" instead of "that.other().thing". rather then getting a syntax error, it just something totally different. In javascript, for example both might be valid.

In assembler, a mistake only affects the line you're working on, the synax is really simple and errors are obvious and actually kind of hard to make. On the other hand, those three lines of code could compile to hundreds, or thousands of lines of code. And you transparently use libraries to do other things, so we get the benefit of everything in AbstractThing without worrying about where it's stored in memory.

You can do all these things in assembly, but it would take a lot of typing. That's why people don't write large programs in it.

But writing a small program in assembly isn't very difficult, and in fact probably easier then more complex languages.

On the other hand, trying to write something interesting is a little more difficult.

(One big problem is that when you call a function, that function is responsible for figuring out what the parameters are based on what's in the registers. That means no type checking by default, so an error that would raise a red flag in a modern language would go unnoticed until your program crashes. All that syntax checking isn't just there to annoy the programmers :))
Is there a dead simple guide to assembly? Shot in the dark, I know.
Every chip is different. I first learned on 32bit x86, which was a beast. Later on in college I had a class where we learned MIPS assembly. Much simpler.

A good strategy might be to wait for this game to come out. Since non-programmers will want to learn it, there will probably be a lot of good guides out. Other then that, I'd recommend looking into the 6502 here are some books on it. It's the chip that powered the Apple II, and importantly has a huge community following of old nerds who cut their teeth on it. Oh, plus it was used in the NES, which of course has been one of the most emulated (I mean in terms of people writing their own emulators)

If you want an idea of how obsessed they are, both with the chip and teaching people about it check these videos about how people analyzed the entire layout using microscopes in order to emulate the thing at the transistor level, then of course did an hour long talk about it that's actually entertaining (at least it was to me)

Actually... now that I think about it, it may very well be that Notch's plan here isn't to make a game that's fun for people who already know assembly, but to create a teaching tool that will introduce coding (and astrophysics) to lots of kids. In that case, he's actually a lot awesomer then I first thought when I heard about this game. For people who already know assembly programming, honestly this doesn't sound like much fun. But on the other hand, when I first taught myself x86 assembler a couple years after getting my first machine, it was a blast. So if this game introduces that to tons of kids who would never even think about picking up a copy of Intel® 64 and IA-32 Architectures Software Developer Manuals (which is the first "book" on assembly mentioned in this on this stack overflow thread
To be 100% clear, there is absolutely no chance of this happening.
Careful[1, 2, 3, 4, 5, 6, ...]

(It's more like 99.999%, is what I'm saying)posted by delmoi at 3:18 AM on April 7, 2012 [3 favorites]


Btw, has there ever been a security bug in Minecraft? Despite all the security problems caused by java, the design of the language was meant to be very secure, so while there are occasionally flaws that get exploited if not patched, it less common to have 'simple' exploits in java programs. So it's unlikely you'd have a malformed minecraft file that could damage your machine. If this new thing is also written in java, the odds of a security flaw would be lower, IMO.

On the other hand, something like adobe acrobat is just supposed to show you documents and somehow it ends up with million security flaws, and one of the most common attack vectors.

posted by delmoi at 3:25 AM on April 7, 2012


Other then that, I'd recommend looking into the 6502

Wow, memories. I remember trying to write 6502 (6510 really) code for my C64 in Basic. Type all the opcodes in "data" statements and then write a simple basic program that "pokes" them all into the right place and then executes them. Fun stuff.
posted by octothorpe at 6:14 AM on April 7, 2012


There's a 6502 simulator in javascript, keep in mind, that's simulator not emulator, it uses the data from that reverse engineering that was done, and actually shows you the state of every single transistor as it runs your code.
posted by delmoi at 7:16 AM on April 7, 2012 [1 favorite]


Oh and "expert mode" lets you modify the program, but it looks like you have to type in hex, but it shouldn't be hard to find an assembler that prints out hex. Also:
Any write to location $000f will cause output to the text box at the top of the lower right pane. Location $D010 acts as a status port and $D011 acts as a data port for reading keyboard input. The status port reads 0 until a character is available.
I went looking for another online, javascript based assembler (since this one didn't do the assembly for you) thing and found this one which is also a 6502 emulator. It has a visual output, and a bunch of example files you can try out (or modify).

Someone wrote a 486 emulator that can actually Boot Linux in a browser. It doesn't give you the interactive assembly debugger, though, nor does linux install come with gdb. It does have gcc, though.

There are also downloadable simulators for various CPUs as well.
posted by delmoi at 7:56 AM on April 7, 2012


There is a LLVM backend now.

There's all sorts of stuff.
posted by Netzapper at 12:35 PM on April 7, 2012


I'm just not able to conceptualize how that would function. Is that a proper analog?

A more abstract analogue, but it would work. But, then, any input to a program could work - the fact that he's including a CPU is kinda irrelevant.

Say Minecraft has some kind of limit into how much redstone it can handle - number of wires per chunk, or the number of changes to state it can handle per game tick. Say it stores this redstone information in memory. Say this bit of memory is just before another bit of memory that's used for something else - say, storing code for writing to disc, or code that sends stuff out over the network, or anything really as long as it's code that the program at some point will execute. Say you put lots of redstone, in a certain pattern, and there's a bug in MInecraft that causes the game to store that excessive data on top of the executable code. Suddenly you, as a user playing the game, have the ability to modify the code of the game. You might figure out exactly how to put the redstone such that you can reprogram the game. If you can reprogram the game to make it do something interesting, and not just crash, then the world's your oyster.

But, as I said, this doesn't actually have much to do with it being redstone, or an emulated CPU. It could just as easily be a text field that's only been allocated 50 characters, but doesn't check if you store 100 characters in it. And I believe languages like Java are much more protected from this sort of problem than, say, C.

As it is, I assume notch will just implement some defined 64kb of memory to contain the CPU's memory, and there will be very simple mechanisms to make sure you can't ever store 65kb of data in it.
posted by Jimbob at 3:49 PM on April 7, 2012


Btw, has there ever been a security bug in Minecraft? Despite all the security problems caused by java, the design of the language was meant to be very secure, so while there are occasionally flaws that get exploited if not patched, it less common to have 'simple' exploits in java programs. So it's unlikely you'd have a malformed minecraft file that could damage your machine. If this new thing is also written in java, the odds of a security flaw would be lower, IMO.

wait, so do people just download random Java code as "plugins" for mine craft and run it, expecting the Java sandbox to keep them safe? that sounds like an environment pretty much optimized to enable this attack.
posted by russm at 5:39 PM on April 7, 2012


Say Minecraft has some kind of limit into how much redstone it can handle - number of wires per chunk, or the number of changes to state it can handle per game tick. Say it stores this redstone information in memory. Say this bit of memory is just before another bit of memory that's used for something else - say, storing code for writing to disc,
One important point: that kind of thing (a buffer overflow) can't happen in a Java program.

Now, there may also be a glitch in the JVM. Since minecraft is written in Java, there would need to be two concurrent bugs: one in the redstone code, and one in the version of the JVM it's running on.

One possible vector might be if the dev working on minecraft now (not Notch anymore, he's working on this) decided to try to optimize redstone by dynamically generating new java bytecode to execute them. And, he makes a mistake. At that point, the JVM takes over and might try to compile that bytecode into raw machine code for whatever chip it happens to be on (x86, ARM, whatever).

So if those two mistakes occur (by two different companies) and be unpached simultaneously, then redstone code might be able to 'escape' into the main system.

Here's the thing to understand about computer security: For any X the question "Is it theoretically possible to get hacked doing X on a real-world computer?" the answer is: pretty much. Is it practically possible? Then it depends.

I remember when I was in high-school, I was fixing some guys computer and he asked me about a rumor he heard about viruses spreading through email as MS Word documents. I told him there was no way that could happen because word documents weren't programs, they just sat there.

A couple months later the Melissa Virus hit.
wait, so do people just download random Java code as "plugins" for mine craft and run it, expecting the Java sandbox to keep them safe?
There are Shader packs that people put out. But in that case the security of using it actually depends on your video card. Shaders work on your GPU, rather then your CPU. CPUs are designed around building secure systems, but GPUs typically aren't*. And then there's also the issue of drivers, which could have problems in some cases and allow exploits, which would actually run as the root user. So a shader exploit could potentially do more damage then even running an EXE. It's one of the big problems they are trying to solve with Web GL (they can also potentially read any data off your screen, including from other windows).

So It all depends on the card and the driver. Hows that for certainty?

Other then that I don't know if there are java plugins for minecraft, or whether minecraft uses the java sandbox to secure them.

The point I was making was that there are features in java that prevent some common security flaws that appear in C/C++ programs like buffer overflows.

(*apparently the XBox 360 hardware/drivers allowed shaders to access any point in system memory)
posted by delmoi at 6:24 PM on April 7, 2012


Another possibility might be some crazy scheme to let redstone devices communicate over the network, and they leave open some flaw that allows the 'device' to access any internal network service, each of which could have their own security flaws.

A simple buffer overflow won't work, so you have to get imaginative.
posted by delmoi at 6:29 PM on April 7, 2012


I didn't mean to spark an intense debate on computer security, apologies if anyone took offense. As far as things go, I'm 100% ok with a 99.9% secure system. If anyone isn't ok with those kinda of numbers then they probably shouldn't be using anything more complicated than a handheld, non-scientific even, calculator.
posted by RolandOfEld at 6:58 PM on April 7, 2012


I don't really think you could have offended anyone.
posted by delmoi at 7:20 AM on April 8, 2012


Notch has scaled pretty well from unknown dude to famous unexpectedly rich dude and has had the grace to know when to carry on and know when not to carry on and has consistently flown the flag for indie gaming. I don't get the hate.

Also, it kind of boggles my mind when people try to say minecraft is 'objectively' not a very well designed/executed game. What matters is whether people subjectively like it or not, and millions of people love minecraft.

I think 0x10c is pretty ambitious, lets hope he pulls it off.
posted by memebake at 1:30 PM on April 8, 2012


I think notch is "hated" for exactly the same reason as some random punk band is hated for "selling out" when average people actually start to like them and buy their albums.

Now notch is attempting the difficult second album.
posted by Jimbob at 2:24 PM on April 8, 2012 [3 favorites]


« Older BBBBBRRRRRRRMMMM... BBBRRRRRMMMMMM......   |   A hipster schoolhouse started by a pair of... Newer »


This thread has been archived and is closed to new comments