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
