diff --git a/sim.c b/sim.c index f2aa826..7720fc7 100644 --- a/sim.c +++ b/sim.c @@ -693,18 +693,14 @@ END_OPERATOR BEGIN_OPERATOR(query) REALIZE_DUAL; - I32 data[3]; - data[0] = (I32)index_of(PEEK(0, -3)); // x - data[1] = (I32)index_of(PEEK(0, -2)); // y - data[2] = (I32)index_of(PEEK(0, -1)); // len + Isz in_x = (Isz)index_of(PEEK(0, -3)) + 1; + Isz in_y = (Isz)index_of(PEEK(0, -2)); + Isz len = (Isz)index_of(PEEK(0, -1)) + 1; + Isz out_x = 1 - len; BEGIN_PORTS PORT(0, -3, IN | HASTE); // x PORT(0, -2, IN | HASTE); // y PORT(0, -1, IN | HASTE); // len - I32 in_x = data[0] + 1; - I32 in_y = data[1]; - I32 len = data[2] + 1; - I32 out_x = 1 - len; // todo direct buffer manip for (I32 i = 0; i < len; ++i) { PORT(in_y, in_x + i, IN); @@ -713,10 +709,6 @@ BEGIN_OPERATOR(query) END_PORTS LEGACY_PHASE_GUARD; - I32 in_x = data[0] + 1; - I32 in_y = data[1]; - I32 len = data[2] + 1; - I32 out_x = 1 - len; oper_copy_columns(gbuffer, mbuffer, height, width, y, x, in_y, in_x, 1, out_x, len, false); // for (I32 i = 0; i < len; ++i) { @@ -868,18 +860,16 @@ END_OPERATOR BEGIN_OPERATOR(teleport) REALIZE_DUAL; - I32 coords[2]; - coords[0] = (I32)index_of(PEEK(0, -1)) + 1; // y - coords[1] = (I32)index_of(PEEK(0, -2)); // x + Isz out_y = (Isz)index_of(PEEK(0, -1)) + 1; + Isz out_x = (Isz)index_of(PEEK(0, -2)); BEGIN_PORTS PORT(0, -1, IN | HASTE); // y PORT(0, -2, IN | HASTE); // x PORT(0, 1, IN); - PORT(coords[0], coords[1], OUT | NONLOCKING); + PORT(out_y, out_x, OUT | NONLOCKING); END_PORTS - LEGACY_PHASE_GUARD; - POKE_STUNNED(coords[0], coords[1], PEEK(0, 1)); + POKE_STUNNED(out_y, out_x, PEEK(0, 1)); END_OPERATOR BEGIN_OPERATOR(zig)