Computering!

My entry's gonna be going into some brave new territory (for my LD entries, at least) - a true sandbox entry. I've been toying around for the past week or so with the idea of writing my own (virtual) processor architecture, using a custom assembly-style language & such. The whole thing is still very WIP, but when I saw "Running out of space" as a possible finalist theme, my interest was immediately piqued for the possibility of making a game that implements said architecture.

Your goal is basically just to write a simple bootloader/BIOS thing capable of loading a thing off the disk, with the only information being "how many addresses to load" in disk address zero. I plan to include detailed documentation both in-game and out, as well as a few small interactive tutorials. Beyond that, it won't really have any hand-waving or goals, and if you want, you can completely blow away the win screen included on the harddrive, to replace it with your own program.

That even means you could write your own (TINY!) game and share the disk image for it with other people. How cool is that?!

Screenshotem2018-08-10/em21-07-43.png

Your computer itself has 128 bytes of RAM, in the form of 32 memory addresses, storing 32 bits each. The drive (port 0) has 1kB of storage space in 256 addresses, currently, 148 of which are in use for rendering the win screen you see above. It also has 64 bytes of register space (16 register addresses), 16 bytes (4 addresses) of which are given semi-hardcoded uses by the processor itself.

The monitor (port 1) is 16x8 pixels and supports 4 colors, off/black, on/white, a dark green, and a light green.

In the future (when I implement the functions for it), there'll be a keyboard in port 2 as well, which isn't likely to be used in any "official goals", so to speak.

I'm not COMPLETELY sure, but I think there's a chance you might be able to make, say, a small Snake implementation or something. It'll definitely run up against memory limitations, though - the only way you can even fit that in RAM is to make a small for loop that can run functions off the disk after an offset, and my guess is you'll need at least 18 addresses to make that loop. JMPs and similar would require even more code.

I intend to include an option to load it up in a higher-fidelity mode that gives you 1kB of RAM & 8kB of disk space, letting you build larger programs, but...that's more for "I just wanna play around in a virtual machine" and less for achieving the LD-specified goal of writing a basic bootloader thingy.

My only major quibble with the whole idea is this: Is this Compo-legal? The actual op-code list & such for the VM/processor was made before LDJam, so does that break the "all assets must be created before the jam" rule?