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
|
||||
|
||||
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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
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