zongors-reality-engine/docs/MACHINE.MD

1.5 KiB

machine

I like uxn's idea of it being 16 bit because its 0 to 65535 or -32768 to 32767 which fits in your head nicely.

memory

ideas for memory (ram) is going to be a giant hashmap of some kind, or maybe like picolisp?

picolisp has 64 bit machine words, a cell is 2 words

types

number (fixed point numbers), symbols (string), cons-pairs (lists)

0000 0000 0000 0000 0000 0000 0000 0000

tfff xxxx yyyy zzzz

0rgb xxxx yyyy zzzz

mmrr rggg bbbx xxx xxxy yyyy yyzz zzzzz

rrrx gggy bbbz xxxx yyyy zzzz

3 bit rgb

rgba xxxx xxyy yyyy

3-3-2 bit rgb

rrrg ggbb xxxx yyyy

triangles

textures

devices

screen

default screen is a single 2 triangle square face with a single dynamic texture that can be drawn on it

keyboard

ASCII/UTF8 encoded values

mouse/joystick

Theoretically a modern controller could be mapped into 3 mouse/joystick devices

A nes controller could be mapped onto 1 mouse/joystick device

x axis -> J1 -> J2 -> Dpad left/right y axis -> J1 -> J2 -> Dpad up/down button 1 -> A -> t1 -> select button 2 -> B -> t2 -> start button 3 -> X -> b2 -> "meta button like controller start" button 4 -> Y -> b2 -> unused

xxxx yyyy 1234

x (4 bits) y (4 bits) 1 is button 1 pressed? 2 is button 2 pressed? 3 is button 3 pressed? 4 is button 4 pressed?

sound/music

This one is going to be the hardest most likely, but its prolly going to be something like the backend dac for ORCA.

network/filesystem

9p filesystem/network by default.

Have an easy way to network.