With some help from Christoph, I've been investigating the CB1 stairs bug
(#326).

In FSCI, the MoveTo works slightly differently than in FreeSCI. Stepping
through ego's movements from the same point in both interpreters and
moving toward the stairs, they are identical up to a point.

The point where they differ is approximately x=260, y=133. At that point
SSCI's heading is 306 (up and left diagonally, loop=1) and FSCI's heading
is 343 (up, loop=3). WHen facing left, heading is 270 in SSCI and is 271
in FSCI. I can't imagine why, but that may throw off the Bresenham
algorith and cause FSCI to move north instead of northwest as SSCI does.

Something else worth noting is that the Mover differs slightly: in SSCI
dx=-2 and dy=-1. In FSCI, dx=0 and dy=-2. I don't remember if these are
Bresenham helper variables or not, so this may not be useful.

When the room changes to Room51 and ego's view changes to 49, loop=4 in
SSCI and loop=5 in FSCI. This seems to a more precise symptom of the
problem. Also, because FSCI's heading was straight up, the y starting
position in the new room is less than it is in SSCI.

I haven't done the stepping to see where the return values of kernel calls
diverges, but wanted to update the list on where I am with this bug.




--
http://www.clock.org/~matt




Reply via email to