Doomception · your turn

The challenge

Several copies of a tiny Doom-like game have to share one 64 KiB machine with no operating system, and your scheduler is what keeps them from trampling each other.

The compiler, assembler, machine and checker on this page are the kit's own C compiled to WebAssembly, so a verdict here is the same as make check on your own machine. The Doomception article explains the real system this is modelled on, and sandbox/README.md has the rules and the local kit.

Your scheduler


Milestones

Not checked yet.

    The checker first runs each level alone, then runs copies of them under your scheduler and compares every copy's globals, hooks, heap and screen with its solo run, frame by frame. The four functions in sched.c are yours, switch_to, save, load and on_frame_end, and the rest of the kit is plumbing.

    The machine

    “Run it in the machine” boots whatever the menu next to it says: one of the runs the checker makes for the milestones, with copies of two or three levels under your scheduler, or a single level alone with no scheduler at all, which is the reference the checker compares copies against. You can stop anywhere, step one instruction at a time in either direction, or jump to the next frame or the next switch, and since the screens are read straight out of the machine's memory, pausing in the middle of a frame shows it half drawn.