add machine docs, add gitignore
This commit is contained in:
parent
8f4ff99635
commit
33dd1cb809
|
@ -0,0 +1,49 @@
|
||||||
|
# -*- mode: gitignore; -*-
|
||||||
|
*~
|
||||||
|
\#*\#
|
||||||
|
/.emacs.desktop
|
||||||
|
/.emacs.desktop.lock
|
||||||
|
*.elc
|
||||||
|
auto-save-list
|
||||||
|
tramp
|
||||||
|
.\#*
|
||||||
|
|
||||||
|
# Org-mode
|
||||||
|
.org-id-locations
|
||||||
|
*_archive
|
||||||
|
|
||||||
|
# flymake-mode
|
||||||
|
*_flymake.*
|
||||||
|
|
||||||
|
# eshell files
|
||||||
|
/eshell/history
|
||||||
|
/eshell/lastdir
|
||||||
|
|
||||||
|
# elpa packages
|
||||||
|
/elpa/
|
||||||
|
|
||||||
|
# reftex files
|
||||||
|
*.rel
|
||||||
|
|
||||||
|
# AUCTeX auto folder
|
||||||
|
/auto/
|
||||||
|
|
||||||
|
# cask packages
|
||||||
|
.cask/
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# Flycheck
|
||||||
|
flycheck_*.el
|
||||||
|
|
||||||
|
# server auth directory
|
||||||
|
/server/
|
||||||
|
|
||||||
|
# projectiles files
|
||||||
|
.projectile
|
||||||
|
|
||||||
|
# directory configuration
|
||||||
|
.dir-locals.el
|
||||||
|
|
||||||
|
# network security
|
||||||
|
/network-security.data
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
The universe machine is a Virtual Machine that is intended to create 3D environments (Universes) for video games and/or generic 3d modeling jobs
|
The universe machine is a Virtual Machine that is intended to create 3D environments (Universes) for video games and/or generic 3d modeling jobs
|
||||||
|
|
||||||
It is inspired by [uxn](https://wiki.xxiivv.com/site/uxn.html), [var'aq](https://web.archive.org/web/20210913164515/https://www.oocities.org/connorbd/varaq/index.html), [TIS-100](https://www.zachtronics.com/tis-100/), [Dusk os](http://duskos.org/), [Inferno](https://www.inferno-os.org/), and [Plan9](https://plan9.io/plan9/).
|
It is inspired by [uxn](https://wiki.xxiivv.com/site/uxn.html), [var'aq](https://web.archive.org/web/20210913164515/https://www.oocities.org/connorbd/varaq/index.html), [TIS-100](https://www.zachtronics.com/tis-100/), [the kings crook engine by EMMIR](https://github.com/LMP88959/PL3D-KC) [Dusk os](http://duskos.org/), [Inferno](https://www.inferno-os.org/), and [Plan9](https://plan9.io/plan9/).
|
||||||
|
|
||||||
The universe machine works as a series of stack based virtual cpu's (node) and ram as a simple hashmap (hram) that each have a single stack which are able to communicate with each other using message passing.
|
The universe machine works as a series of stack based virtual cpu's (node) and ram as a simple hashmap (hram) that each have a single stack which are able to communicate with each other using message passing.
|
||||||
|
|
||||||
|
@ -10,4 +10,3 @@ The machine code of this node is a series of stack operations which act on the i
|
||||||
|
|
||||||
The authors main implementation of ZUM in written in LUA/C and uses the [SDL2](https://www.libsdl.org/) library to do drawing, sound, and other things.
|
The authors main implementation of ZUM in written in LUA/C and uses the [SDL2](https://www.libsdl.org/) library to do drawing, sound, and other things.
|
||||||
|
|
||||||
Others
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue