||10 months ago|
|data||2 years ago|
|docs||2 years ago|
|tests||2 years ago|
|.gitignore||2 years ago|
|Makefile||2 years ago|
|asm.py||10 months ago|
|dev_clock.c||10 months ago|
|dev_debug.c||10 months ago|
|dev_lem1802.c||10 months ago|
|device.c||10 months ago|
|device.h||10 months ago|
|disasm.py||2 years ago|
|dsim.c||10 months ago|
|font.c||2 years ago|
|palette.c||2 years ago|
Hardware specifications for 0x10c
This repository serves as a historical archive containing specifications for the fictional hardware of the game 0x10c. The game was to be a multiplayer sandbox game set in space, with a fully programmable CPU controlling a ship. The game was cancelled in 2013 to much dismay of fans. A number of fan projects appeared aiming at continuing development, but they also appear to be abandoned.
There are a large number of fan works on GitHub, mainly implementations of the DCPU-16 hardware or code to run on it. GitHub still has a list of DCPU-16 ASM trending repositories. These usually included links to the official specifications which were either hosted on Pastebin or 0x10c.com. The later has been been offline since February 2014 (weirdly the domain was renewed for another year in April 2014), so this is my attempt to archive them for future reference.
- DCPU-16 - 16bit CPU.
- LEM1802 - 128x96 pixel color display.
- SPED-3 - 3D vector display.
- M35FD - Floppy disk drive.
- SPC2000 - Deep sleep chamber. This is part of 0x10c's backstory (the number of years to sleep was entered in the wrong byte order).
- Clock - Basic real time clock.
- Keyboard - Keyboard interface.
Community Adopted Specifications
The floppy drive specification was released approximately six months after the release of the initial specifications. Before this time a fan work specification for the HMD2043 floppy disk drive was released. A number of emulators continue to use this rather than the official M35FD.
Although the specification of the LEM1802 says it must be initialised before use, most emulators start with the device already initialised with video memory mapped to 0x8000.
Although there is a specification for a keyboard device, Notch's alpha releases of 0x10c which included a functional DCPU-16 system did not follow this. Instead the keyboard is interfaced through a 16 letter ring buffer mapped at 0x9000 (non configurable). An address is 0 before a key is pressed, and should be written as 0 again after being read so it can be checked later. Most emulators follow this functionality.
The official specifications don't go too in depth into the format of the assembly language, and there has been no official assembler released. The code in the specification is similar to NASM and community assemblers are also based on this. Most support labels, and some add macros. The language has come to be known as DASM (DCPU-16 Assembly) and typically has the extension
dasm16. Object code has the extension
The copyright notices in the specifications are assumed to be fictional due to the copyright dates being dated when the game was set (1980s), not when the fictional works were written (2012/2013). Even so, these fictional works are still assumed to be under the copyright of Mojang. They are being reproduced here to serve as a non-commerical archive which is permitted under most copyright laws around the world (including the US where GitHub is based, and the UK where I am based).
The implementation of these specifications in your own commerical work is permitted (it is just a specification and is not patented), however you probably should not reproduce these specification documents as is. Care should be taken with hardware and manufacturer names, as they may also be under the copyright of Mojang.
Notch has said on Reddit that Mojang didn't want these files to be distributed originally, as they didn't want the hardware to become fragmented before the game was finished. He has also said that implementing the hardware in your own games is allowed.