Browse Source

Fix incorrect 'X' coordinates

master
cancel 6 years ago
parent
commit
37a2132367
  1. 18
      sim.c

18
sim.c

@ -798,25 +798,25 @@ END_PHASE
BEGIN_DUAL_PHASE_0(teleport) BEGIN_DUAL_PHASE_0(teleport)
PSEUDO_DUAL; PSEUDO_DUAL;
I32 coords[2]; I32 coords[2];
coords[0] = 0; // y coords[0] = 1; // y
coords[1] = 1; // x coords[1] = 0; // x
if (IS_AWAKE) { if (IS_AWAKE) {
coords[0] = (I32)usz_clamp(index_of(PEEK(0, -1)), 0, 16); coords[0] = (I32)usz_clamp(index_of(PEEK(0, -1)), 1, 16);
coords[1] = (I32)usz_clamp(index_of(PEEK(0, -2)), 1, 16); coords[1] = (I32)usz_clamp(index_of(PEEK(0, -2)), 0, 16);
STORE(coords); STORE(coords);
} }
BEGIN_DUAL_PORTS BEGIN_DUAL_PORTS
PORT(0, -1, IN | HASTE); PORT(0, -1, IN | HASTE); // y
PORT(0, -2, IN | HASTE); PORT(0, -2, IN | HASTE); // x
PORT(1, 0, IN); PORT(0, 1, IN);
PORT(coords[0], coords[1], OUT | NONLOCKING); PORT(coords[0], coords[1], OUT | NONLOCKING);
END_PORTS END_PORTS
END_PHASE END_PHASE
BEGIN_DUAL_PHASE_1(teleport) BEGIN_DUAL_PHASE_1(teleport)
I32 coords[2]; I32 coords[2];
if (!LOAD(coords)) { if (!LOAD(coords)) {
coords[0] = 0; coords[0] = 1;
coords[1] = 1; coords[1] = 0;
} }
POKE(coords[0], coords[1], PEEK(0, 1)); POKE(coords[0], coords[1], PEEK(0, 1));
STUN(coords[0], coords[1]); STUN(coords[0], coords[1]);

Loading…
Cancel
Save