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 (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_OFFSET 1
|
||||
|
||||
|
||||
@@ -75,22 +75,16 @@ Color simulation_cell_color(const bf_token cell)
|
||||
|
||||
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)
|
||||
{
|
||||
const bf_token *base = sim->memory + (i * SIZEOF_PROGRAM);
|
||||
u64 s_x = (i % SIMULATION_ROW) * PROGRAM_ROW;
|
||||
u64 s_y = (i / SIMULATION_ROW) * PROGRAM_ROW;
|
||||
u64 s_x = (i % SIMULATION_ROW_SIZE) * PROGRAM_ROW_SIZE;
|
||||
u64 s_y = (i / SIMULATION_ROW_SIZE) * PROGRAM_ROW_SIZE;
|
||||
|
||||
for (u64 j = 0; j < SIZEOF_PROGRAM; ++j)
|
||||
{
|
||||
u64 p_x = j % PROGRAM_ROW;
|
||||
u64 p_y = j / PROGRAM_ROW;
|
||||
u64 p_x = j % PROGRAM_ROW_SIZE;
|
||||
u64 p_y = j / PROGRAM_ROW_SIZE;
|
||||
p_x += s_x;
|
||||
p_y += s_y;
|
||||
|
||||
@@ -104,8 +98,8 @@ void simulation_draw(simulation_t *sim)
|
||||
|
||||
DrawRectangleLinesEx((Rectangle){.x = s_x * CELL_WIDTH,
|
||||
.y = s_y * CELL_HEIGHT,
|
||||
.width = CELL_WIDTH * SIMULATION_ROW,
|
||||
.height = CELL_HEIGHT * SIMULATION_ROW},
|
||||
.width = CELL_WIDTH * PROGRAM_ROW_SIZE,
|
||||
.height = CELL_HEIGHT * PROGRAM_ROW_SIZE},
|
||||
1, DARKGRAY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
|
||||
#include "bf.h"
|
||||
|
||||
#define SIMULATION_SIZE (NUM_PROGRAMS * SIZEOF_PROGRAM)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bf_token memory[SIMULATION_SIZE];
|
||||
|
||||
Reference in New Issue
Block a user