diff --git a/README.md b/README.md index 949ac26..67d7af1 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,69 @@ # Fungera: A two-dimensional evolution simulator + ### Organism structure + - Main memory block - Child memory block (optional) - Instruction pointer - Delta (direction) - 4 general purpose registers - A stack of 8 values + ### Instruction set + | Symbol | Max ops | Description | Type | -|--------|---------|-------------------------------------------------|-------------| -| `.` | 0 | Template constructor | Template | -| `:` | 0 | Template constructor | Template | -| `a` | 0 | Register modifier | Register | -| `b` | 0 | Register modifier | Register | -| `c` | 0 | Register modifier | Register | -| `d` | 0 | Register modifier | Register | -| `^` | 0 | Direction modifier (up) | Direction | -| `v` | 0 | Direction modifier (down) | Direction | -| `>` | 0 | Direction modifier (right) | Direction | -| `<` | 0 | Direction modifier (left) | Direction | -| `x` | 0 | Operation modifier | Operation | -| `y` | 0 | Operation modifier | Operation | -| `&` | 2+ | Find template, put its address in register | Matching | -| `?` | 4 | If not zero | Conditional | -| `0` | 1 | Put [0, 0] vector into the register | Arithmetic | -| `1` | 1 | Put [1, 1] vector into the register | Arithmetic | -| `-` | 2 | Decrement value in register | Arithmetic | -| `+` | 2 | Increment value in register | Arithmetic | -| `~` | 3 | Subtract registers and store result in register | Arithmetic | -| `W` | 2 | Write instruction from register to address | Replication | -| `L` | 2 | Load instruction from address to register | Replication | -| `@` | 2 | Allocate child memory of size | Replication | -| `$` | 0 | Split child organism | Replication | -| `S` | 1 | Push value from register into the stack | Stack | -| `P` | 1 | Pop value of register into the stack | Stack | +| ------ | ------- | ----------------------------------------------- | ----------- | +| `.` | 0 | Template constructor | Template | +| `:` | 0 | Template constructor | Template | +| `a` | 0 | Register modifier | Register | +| `b` | 0 | Register modifier | Register | +| `c` | 0 | Register modifier | Register | +| `d` | 0 | Register modifier | Register | +| `^` | 0 | Direction modifier (up) | Direction | +| `v` | 0 | Direction modifier (down) | Direction | +| `>` | 0 | Direction modifier (right) | Direction | +| `<` | 0 | Direction modifier (left) | Direction | +| `x` | 0 | Operation modifier | Operation | +| `y` | 0 | Operation modifier | Operation | +| `&` | 2+ | Find template, put its address in register | Matching | +| `?` | 4 | If not zero | Conditional | +| `0` | 1 | Put [0, 0] vector into the register | Arithmetic | +| `1` | 1 | Put [1, 1] vector into the register | Arithmetic | +| `-` | 2 | Decrement value in register | Arithmetic | +| `+` | 2 | Increment value in register | Arithmetic | +| `~` | 3 | Subtract registers and store result in register | Arithmetic | +| `W` | 2 | Write instruction from register to address | Replication | +| `L` | 2 | Load instruction from address to register | Replication | +| `@` | 2 | Allocate child memory of size | Replication | +| `$` | 0 | Split child organism | Replication | +| `S` | 1 | Push value from register into the stack | Stack | +| `P` | 1 | Pop value of register into the stack | Stack | ### Running Fungera -Python 3.7 is required to run Fungera. Once it is installed, running Fungera is simple. + +Python 3.7 is required to run Fungera. Once it is installed, running Fungera is simple. + ``` python -m pip install -r requirements.txt python fungera.py --name "Simulation 1" ``` +### Install issues + +In case of issues with "curses" library under windows 10, please use [this](https://stackoverflow.com/questions/32417379/what-is-needed-for-curses-in-python-3-4-on-windows7) approach. And than, install all dependencies from "requirements.txt" file manually (except "curses"). + ### TUI controls -| Key | Action | -|--------------------|-----------------------------------------------------| -| space | Start/pause simulation | + +| Key | Action | +| ------------------ | -------------------------------- | +| space | Start/pause simulation | | c | Advance 1 cycle (only if paused) | -| | Move memory view up | -| | Move memory view down | -| | Move memory view left | -| | Move memory view right | -| d | Select next organism | -| a | Select previous organism | -| p | Save simulation | -| l | Load last saved simulation | -| m | Toogle minimal mode | \ No newline at end of file +| | Move memory view up | +| | Move memory view down | +| | Move memory view left | +| | Move memory view right | +| d | Select next organism | +| a | Select previous organism | +| p | Save simulation | +| l | Load last saved simulation | +| m | Toogle minimal mode |