simulation: extract constants out to base.h from simulation_draw

This commit is contained in:
2026-03-18 14:10:34 +00:00
parent 59befd5a16
commit ac470ca080
3 changed files with 14 additions and 14 deletions

View File

@@ -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

View File

@@ -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);
} }
} }

View File

@@ -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];