[Scummvm-tracker] [ScummVM] #10814: QFG4: Crash in cave when fighting Pit Horror below the tightrope
Vhati
trac at scummvm.org
Thu Nov 22 03:39:00 CET 2018
#10814: QFG4: Crash in cave when fighting Pit Horror below the tightrope
--------------------------------+-------------------------
Reporter: Vhati | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: Engine: SCI
Resolution: | Keywords: SCI32
Game: Quest for Glory 4 |
--------------------------------+-------------------------
Comment (by Vhati):
@m-kiewitz:
> It looks to me as if it's g188_egoSpell, that is returning an object.
I thought the onMe(x, y) would do hit detection and return a boolean?
SCI Companion highlights the inner OnMe brown: it's asking the kernel to
handle it.
Digging up g188_egoSpell's class...
script 38 - sActor::onMe()
{{{
(method (onMe param1 param2)
(OnMe param1 param2 self (& signal skipCheck))
)
}}}
\\
\\
In any case, the error is complaining about a bitwise operator.
(| a b) is a bitwise operator.
(or a b) is a conditional operator.
\\
\\
Debugger's "registers" command reports pc=002e:0410 when the error occurs.
{{{
002e:0404: 78 push1
002e:0405: 72 10 00 lofsa horror[1694]
002e:0408: 36 push
002e:0409: 43 0a 02 00 callk SetNowSeen[a], 0002
002e:040d: 36 push
002e:040e: 35 01 ldi 01
002e:0410: 14 or
}}}
It's doing a bitwise OR between what I'd expect to be the kernel call's
result and 1.
Breaking just after the call, acc=002e:1694, which is the address of
horror. The kernel is either leaving the accumulator untouched - horror
was the last thing in acc - or the kernel is returning the object it was
given.
--
Ticket URL: <https://bugs.scummvm.org/ticket/10814#comment:9>
ScummVM <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list