bug #326 is the Colone's Bequest bug where ego falls down the stairs when
not holding the lantern. In SSCI, she falls to her death. in FSCI, she
bounces back out and moves oddly from then on.
I've done side-by-side debugging on this problem as well, and found the
following difference.
Where y=130 and x=280, and ego is positioned on the right side of the now
open secret staircase, I start walking left. I set a breakpoint on
ego::isBlocked 3 times, and then start single stepping in both debuggers.
pc=2572 acc=5582 o=0684 fp=6374 sp=637c
Step #2296353
2572: [W] send 04
cast::elements[VAR]()
pc=2574 acc=7924 o=0684 fp=6374 sp=6378
Step #2296354
2574: [W] push
pc=2575 acc=7924 o=0684 fp=6374 sp=637a
Step #2296355
2575: [B] callk CanBeHere[51] 04
Kernel params: (0684, 7924)
pc=2578 acc=0001 o=0684 fp=6374 sp=6374
Step #2296356
2578: [W] bnt 0033 [25ae]
pc=257b acc=0001 o=0684 fp=6374 sp=6374
Step #2296357
257b: [B] pTos 1c (signal)
pc=257d acc=0001 o=0684 fp=6374 sp=6376
Step #2296358
257d: [W] ldi 2000
pc=2580 acc=2000 o=0684 fp=6374 sp=6376
Step #2296359
2580: [W] and
pc=2581 acc=2000 o=0684 fp=6374 sp=6374
Step #2296360
2581: [W] bt 0015 [2599]
pc=2599 acc=2000 o=0684 fp=6374 sp=6374
Step #2296361
2599: [W] bnt 0012 [25ae]
pc=259c acc=2000 o=0684 fp=6374 sp=6374
Step #2296362
259c: [B] pTos 48 (blocks)
pc=259e acc=2000 o=0684 fp=6374 sp=6376
Step #2296363
259e: [B] ldi 00
pc=25a0 acc=0000 o=0684 fp=6374 sp=6376
Step #2296364
25a0: [W] eq?
pc=25a1 acc=0001 o=0684 fp=6374 sp=6374
Step #2296365
25a1: [W] bt 000a [25ae]
pc=25ae acc=0001 o=0684 fp=6374 sp=6374
Step #2296366
25ae: [W] ret
pc=776c acc=0000 o=aada fp=6360 sp=636c
prev=0 sbase=6336 globls=1958 &restmod=0
Step #2296367
776c: [B] pTos 0c (x)
In Sierra SCI, the accumulator is 1 after the ret instruction. in FSCI, it
is 0. backtrace shows:
Call stack (current base: 5):
0:[ffffffff] CB1::replay()
obj@0eea pc=0b7d sp=6338 fp=6338
1:[0] Game::replay()
obj@0eea pc=57a6 sp=633c fp=633c
2:[1] CB1::doit()
obj@0eea pc=0cab sp=6344 fp=6340
3:[2] Game::doit()
obj@0eea pc=5841 sp=6348 fp=6348
4:[3] kAnimate(7924, 0001)
5:[4] ego::doit()
obj@0684 pc=4eab sp=6352 fp=6352
6:[5] Act::doit()
obj@0684 pc=2323 sp=635c fp=6356
7:[6] MoveTo::doit()
obj@aada pc=776e sp=636e fp=6360
Inspecting ego shows no differences. Inspecting ego's mover shows some
differences, but only in b-i2 and b-di, which I've been told to ignore
before since they are helper variables for the bresenham algorithm.
I can get to this state again easily to continue debugging, but I'm not
sure what to do next. Any ideas?
Thanks!
--
http://www.clock.org/~matt