simulation: extract constants out to base.h from simulation_draw
This commit is contained in:
@@ -39,6 +39,14 @@ typedef double f64;
|
|||||||
#define NUM_PROGRAMS_POW_2 10
|
#define NUM_PROGRAMS_POW_2 10
|
||||||
#define NUM_PROGRAMS (1 << NUM_PROGRAMS_POW_2)
|
#define NUM_PROGRAMS (1 << NUM_PROGRAMS_POW_2)
|
||||||
|
|
||||||
|
#define SIMULATION_SIZE (NUM_PROGRAMS * SIZEOF_PROGRAM)
|
||||||
|
#define PROGRAM_ROW_SIZE (1 << (SIZEOF_PROGRAM_POW_2 / 2))
|
||||||
|
#define SIMULATION_ROW_SIZE (1 << (NUM_PROGRAMS_POW_2 / 2))
|
||||||
|
|
||||||
|
#define CELL_ROW_SIZE (PROGRAM_ROW_SIZE * SIMULATION_ROW_SIZE)
|
||||||
|
#define CELL_WIDTH (WIDTH / (f64)CELL_ROW_SIZE)
|
||||||
|
#define CELL_HEIGHT (HEIGHT / (f64)CELL_ROW_SIZE)
|
||||||
|
|
||||||
#define MUTATION_CHANCE 5000
|
#define MUTATION_CHANCE 5000
|
||||||
#define MUTATION_OFFSET 1
|
#define MUTATION_OFFSET 1
|
||||||
|
|
||||||
|
|||||||
@@ -75,22 +75,16 @@ Color simulation_cell_color(const bf_token cell)
|
|||||||
|
|
||||||
void simulation_draw(simulation_t *sim)
|
void simulation_draw(simulation_t *sim)
|
||||||
{
|
{
|
||||||
const u64 PROGRAM_ROW = (1 << (SIZEOF_PROGRAM_POW_2 / 2));
|
|
||||||
const u64 SIMULATION_ROW = (1 << (NUM_PROGRAMS_POW_2 / 2));
|
|
||||||
const u64 ROW_NUM_CELLS = (PROGRAM_ROW * SIMULATION_ROW);
|
|
||||||
const f64 CELL_WIDTH = WIDTH / (f64)ROW_NUM_CELLS;
|
|
||||||
const f64 CELL_HEIGHT = HEIGHT / (f64)ROW_NUM_CELLS;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < NUM_PROGRAMS; ++i)
|
for (size_t i = 0; i < NUM_PROGRAMS; ++i)
|
||||||
{
|
{
|
||||||
const bf_token *base = sim->memory + (i * SIZEOF_PROGRAM);
|
const bf_token *base = sim->memory + (i * SIZEOF_PROGRAM);
|
||||||
u64 s_x = (i % SIMULATION_ROW) * PROGRAM_ROW;
|
u64 s_x = (i % SIMULATION_ROW_SIZE) * PROGRAM_ROW_SIZE;
|
||||||
u64 s_y = (i / SIMULATION_ROW) * PROGRAM_ROW;
|
u64 s_y = (i / SIMULATION_ROW_SIZE) * PROGRAM_ROW_SIZE;
|
||||||
|
|
||||||
for (u64 j = 0; j < SIZEOF_PROGRAM; ++j)
|
for (u64 j = 0; j < SIZEOF_PROGRAM; ++j)
|
||||||
{
|
{
|
||||||
u64 p_x = j % PROGRAM_ROW;
|
u64 p_x = j % PROGRAM_ROW_SIZE;
|
||||||
u64 p_y = j / PROGRAM_ROW;
|
u64 p_y = j / PROGRAM_ROW_SIZE;
|
||||||
p_x += s_x;
|
p_x += s_x;
|
||||||
p_y += s_y;
|
p_y += s_y;
|
||||||
|
|
||||||
@@ -104,8 +98,8 @@ void simulation_draw(simulation_t *sim)
|
|||||||
|
|
||||||
DrawRectangleLinesEx((Rectangle){.x = s_x * CELL_WIDTH,
|
DrawRectangleLinesEx((Rectangle){.x = s_x * CELL_WIDTH,
|
||||||
.y = s_y * CELL_HEIGHT,
|
.y = s_y * CELL_HEIGHT,
|
||||||
.width = CELL_WIDTH * SIMULATION_ROW,
|
.width = CELL_WIDTH * PROGRAM_ROW_SIZE,
|
||||||
.height = CELL_HEIGHT * SIMULATION_ROW},
|
.height = CELL_HEIGHT * PROGRAM_ROW_SIZE},
|
||||||
1, DARKGRAY);
|
1, DARKGRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
|
|
||||||
#include "bf.h"
|
#include "bf.h"
|
||||||
|
|
||||||
#define SIMULATION_SIZE (NUM_PROGRAMS * SIZEOF_PROGRAM)
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
bf_token memory[SIMULATION_SIZE];
|
bf_token memory[SIMULATION_SIZE];
|
||||||
|
|||||||
Reference in New Issue
Block a user