Browse Source

Add tick number param

master
cancel 6 years ago
parent
commit
90f3383dd0
  1. 6
      cli_main.c
  2. 29
      sim.c
  3. 3
      sim.h

6
cli_main.c

@ -100,8 +100,10 @@ int main(int argc, char** argv) {
markmap_reusable_ensure_size(&markmap_r, field.height, field.width); markmap_reusable_ensure_size(&markmap_r, field.height, field.width);
Bank bank; Bank bank;
bank_init(&bank); bank_init(&bank);
for (int i = 0; i < ticks; ++i) { Usz max_ticks = (Usz)ticks;
orca_run(field.buffer, markmap_r.buffer, field.height, field.width, &bank); for (Usz i = 0; i < max_ticks; ++i) {
orca_run(field.buffer, markmap_r.buffer, field.height, field.width, i,
&bank);
} }
markmap_reusable_deinit(&markmap_r); markmap_reusable_deinit(&markmap_r);
bank_deinit(&bank); bank_deinit(&bank);

29
sim.c

@ -139,7 +139,7 @@ Usz usz_clamp(Usz val, Usz min, Usz max) {
#define OPER_PHASE_COMMON_ARGS \ #define OPER_PHASE_COMMON_ARGS \
Gbuffer const gbuffer, Mbuffer const mbuffer, Usz const height, \ Gbuffer const gbuffer, Mbuffer const mbuffer, Usz const height, \
Usz const width, Usz const y, Usz const x Usz const width, Usz const y, Usz const x, Usz Tick_number
#define OPER_PHASE_0_COMMON_ARGS \ #define OPER_PHASE_0_COMMON_ARGS \
OPER_PHASE_COMMON_ARGS, Oper_bank_write_params *const bank_params, \ OPER_PHASE_COMMON_ARGS, Oper_bank_write_params *const bank_params, \
U8 const cell_flags U8 const cell_flags
@ -153,6 +153,7 @@ Usz usz_clamp(Usz val, Usz min, Usz max) {
(void)width; \ (void)width; \
(void)y; \ (void)y; \
(void)x; \ (void)x; \
(void)Tick_number; \
(void)bank_params; (void)bank_params;
#define BEGIN_SOLO_PHASE_0(_oper_name) \ #define BEGIN_SOLO_PHASE_0(_oper_name) \
@ -674,31 +675,32 @@ END_PHASE
#define SIM_EXPAND_SOLO_PHASE_0(_oper_char, _oper_name) \ #define SIM_EXPAND_SOLO_PHASE_0(_oper_char, _oper_name) \
case _oper_char: \ case _oper_char: \
oper_phase0_##_oper_name(gbuf, mbuf, height, width, iy, ix, bank_params, \ oper_phase0_##_oper_name(gbuf, mbuf, height, width, iy, ix, tick_number, \
cell_flags); \ bank_params, cell_flags); \
break; break;
#define SIM_EXPAND_SOLO_PHASE_1(_oper_char, _oper_name) \ #define SIM_EXPAND_SOLO_PHASE_1(_oper_char, _oper_name) \
case _oper_char: \ case _oper_char: \
oper_phase1_##_oper_name(gbuf, mbuf, height, width, iy, ix, bank_params); \ oper_phase1_##_oper_name(gbuf, mbuf, height, width, iy, ix, tick_number, \
bank_params); \
break; break;
#define SIM_EXPAND_DUAL_PHASE_0(_upper_oper_char, _lower_oper_char, \ #define SIM_EXPAND_DUAL_PHASE_0(_upper_oper_char, _lower_oper_char, \
_oper_name) \ _oper_name) \
case _upper_oper_char: \ case _upper_oper_char: \
case _lower_oper_char: \ case _lower_oper_char: \
oper_phase0_##_oper_name(gbuf, mbuf, height, width, iy, ix, bank_params, \ oper_phase0_##_oper_name(gbuf, mbuf, height, width, iy, ix, tick_number, \
cell_flags, glyph_char); \ bank_params, cell_flags, glyph_char); \
break; break;
#define SIM_EXPAND_DUAL_PHASE_1(_upper_oper_char, _lower_oper_char, \ #define SIM_EXPAND_DUAL_PHASE_1(_upper_oper_char, _lower_oper_char, \
_oper_name) \ _oper_name) \
case _upper_oper_char: \ case _upper_oper_char: \
case _lower_oper_char: \ case _lower_oper_char: \
oper_phase1_##_oper_name(gbuf, mbuf, height, width, iy, ix, bank_params, \ oper_phase1_##_oper_name(gbuf, mbuf, height, width, iy, ix, tick_number, \
glyph_char); \ bank_params, glyph_char); \
break; break;
static void sim_phase_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width, static void sim_phase_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
Oper_bank_write_params* bank_params) { Usz tick_number, Oper_bank_write_params* bank_params) {
for (Usz iy = 0; iy < height; ++iy) { for (Usz iy = 0; iy < height; ++iy) {
Glyph* glyph_row = gbuf + iy * width; Glyph* glyph_row = gbuf + iy * width;
for (Usz ix = 0; ix < width; ++ix) { for (Usz ix = 0; ix < width; ++ix) {
@ -716,7 +718,7 @@ static void sim_phase_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
} }
static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width, static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
Oper_bank_read_params* bank_params) { Usz tick_number, Oper_bank_read_params* bank_params) {
for (Usz iy = 0; iy < height; ++iy) { for (Usz iy = 0; iy < height; ++iy) {
Glyph* glyph_row = gbuf + iy * width; Glyph* glyph_row = gbuf + iy * width;
for (Usz ix = 0; ix < width; ++ix) { for (Usz ix = 0; ix < width; ++ix) {
@ -734,15 +736,16 @@ static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
} }
} }
void orca_run(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width, Bank* bank) { void orca_run(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
Usz tick_number, Bank* bank) {
mbuffer_clear(mbuf, height, width); mbuffer_clear(mbuf, height, width);
Oper_bank_write_params bank_write_params; Oper_bank_write_params bank_write_params;
bank_write_params.bank = bank; bank_write_params.bank = bank;
bank_write_params.size = 0; bank_write_params.size = 0;
sim_phase_0(gbuf, mbuf, height, width, &bank_write_params); sim_phase_0(gbuf, mbuf, height, width, tick_number, &bank_write_params);
Oper_bank_read_params bank_read_params; Oper_bank_read_params bank_read_params;
bank_read_params.bank = bank; bank_read_params.bank = bank;
bank_read_params.size = bank_write_params.size; bank_read_params.size = bank_write_params.size;
bank_cursor_reset(&bank_read_params.cursor); bank_cursor_reset(&bank_read_params.cursor);
sim_phase_1(gbuf, mbuf, height, width, &bank_read_params); sim_phase_1(gbuf, mbuf, height, width, tick_number, &bank_read_params);
} }

3
sim.h

@ -3,4 +3,5 @@
#include "base.h" #include "base.h"
#include "mark.h" #include "mark.h"
void orca_run(Gbuffer gbuf, Mbuffer markmap, Usz height, Usz width, Bank* bank); void orca_run(Gbuffer gbuf, Mbuffer markmap, Usz height, Usz width,
Usz tick_number, Bank* bank);

Loading…
Cancel
Save