diff options
author | Paul Oliver <contact@pauloliver.dev> | 2024-02-29 02:29:13 +0100 |
---|---|---|
committer | Paul Oliver <contact@pauloliver.dev> | 2024-02-29 02:29:13 +0100 |
commit | ca118555214a176728b9aab87849391344306d6d (patch) | |
tree | 833cffdd4066a7114b1d79d6eeaa2e0152408fc8 /include/evolver.h |
Initial commit.
Diffstat (limited to 'include/evolver.h')
-rw-r--r-- | include/evolver.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/include/evolver.h b/include/evolver.h new file mode 100644 index 0000000..b2ead10 --- /dev/null +++ b/include/evolver.h @@ -0,0 +1,38 @@ +/** +* @file evolver.h +* @author Paul Oliver +* +* This module controls all random events in Salis. At its heart lies a +* XOR-Shift pseudo-random number generator with 128 bits of state. It controls +* cosmic rays and rises simulation entropy whenever organisms 'eat' +* information. +*/ + +#ifndef SALIS_EVOLVER_H +#define SALIS_EVOLVER_H + +void _sal_evo_init(void); +void _sal_evo_quit(void); +void _sal_evo_load_from(FILE *file); +void _sal_evo_save_into(FILE *file); + +/** Get address where the last cosmic ray landed. +* @return Last address changed by a cosmic ray +*/ +SALIS_API uint32 sal_evo_get_last_changed_address(void); + +/** Get amount of random numbers generated during the last simulation cycle. +* @return Number of calls to the random number generator during the last cycle +*/ +SALIS_API uint32 sal_evo_get_calls_on_last_cycle(void); + +/** Access the internal state of the XOR-Shift random number generator. +* @param state_index Index of one of the 32 bit state-blocks [0-4] +* @return State of the 32 bit block +*/ +SALIS_API uint32 sal_evo_get_state(uint8 state_index); + +void _sal_evo_randomize_at(uint32 address); +void _sal_evo_cycle(void); + +#endif |