From 4a5b268e2ecd10fe45923ee2916a07e954f79dd1 Mon Sep 17 00:00:00 2001 From: Alison Watson Date: Thu, 12 Dec 2019 16:54:50 -0500 Subject: [PATCH] add installation and vm notes --- doc/install.md | 40 ++++++++++++++++++++++++++++ doc/vm.md | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 doc/install.md create mode 100644 doc/vm.md diff --git a/doc/install.md b/doc/install.md new file mode 100644 index 0000000..92d401c --- /dev/null +++ b/doc/install.md @@ -0,0 +1,40 @@ +# Spingle Installation + +To compile Spingle, you will need: + +- Any reasonably new C compiler +- pkg-config (any version) +- CMake (>=3.14) +- SDL2 (>=2.0.0) +- OpenGL (1.0 or newer, 1.3 for shaders) + +For FLAC support: + +- libFLAC (>=1.3.3) + +For Ogg Vorbis support: + +- libvorbis (>=1.3.6) +- libvorbisfile (>=1.3.6) +- libogg (>=1.3.4) + +For Ogg Opus support: + +- libopus (>=1.3.1) +- libopusfile (>=0.11) +- libogg (>=1.3.4) + +For tracker music support: + +- libmikmod (>=3.3.11) + +To generate build files: + +``` +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release +``` + +After that, use the generated build files to compile. (For Makefiles simply run +`make`, for Ninja use `ninja`, etc.) diff --git a/doc/vm.md b/doc/vm.md new file mode 100644 index 0000000..819c472 --- /dev/null +++ b/doc/vm.md @@ -0,0 +1,72 @@ +## Spingle VM + +### `OP_DONE`, `OP_RETURN` + +Sets the 3 return globals to the 3 globals pointed to by A and returns control +to the statement pointed to by the top of the stack by restoring locals and +jumping. + +### `OP_MUL_F`, `OP_DIV_F`, `OP_ADD_F`, `OP_SUB_F` + + + +### `OP_MUL_V` +### `OP_MUL_FV` +### `OP_MUL_VF` +### `OP_ADD_V` +### `OP_SUB_V` +### `OP_EQ_F` +### `OP_EQ_V` +### `OP_EQ_S` +### `OP_EQ_E` +### `OP_EQ_FNC` +### `OP_NE_F` +### `OP_NE_V` +### `OP_NE_S` +### `OP_NE_E` +### `OP_NE_FNC` +### `OP_LE` +### `OP_GE` +### `OP_LT` +### `OP_GT` +### `OP_LOAD_F` +### `OP_LOAD_V` +### `OP_LOAD_S` +### `OP_LOAD_ENT` +### `OP_LOAD_FLD` +### `OP_LOAD_FNC` +### `OP_ADDRESS` +### `OP_STORE_F` +### `OP_STORE_V` +### `OP_STORE_S` +### `OP_STORE_ENT` +### `OP_STORE_FLD` +### `OP_STORE_FNC` +### `OP_STOREP_F` +### `OP_STOREP_V` +### `OP_STOREP_S` +### `OP_STOREP_ENT` +### `OP_STOREP_FLD` +### `OP_STOREP_FNC` +### `OP_NOT_F` +### `OP_NOT_V` +### `OP_NOT_S` +### `OP_NOT_ENT` +### `OP_NOT_FNC` +### `OP_IF` +### `OP_IFNOT` +### `OP_CALL0` +### `OP_CALL1` +### `OP_CALL2` +### `OP_CALL3` +### `OP_CALL4` +### `OP_CALL5` +### `OP_CALL6` +### `OP_CALL7` +### `OP_CALL8` +### `OP_STATE` +### `OP_GOTO` +### `OP_AND` +### `OP_OR` +### `OP_BITAND` +### `OP_BITOR`