[Scummvm-tracker] [ScummVM :: Bugs] #12503: a mismatch between the book title and the text
ScummVM :: Bugs
trac at scummvm.org
Fri Apr 30 02:30:01 UTC 2021
#12503: a mismatch between the book title and the text
-------------------------+---------------------------------
Reporter: cefotaxime | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: Engine: Ultima
Version: | Resolution:
Keywords: resurrection | Game: Ultima VIII: Pagan
-------------------------+---------------------------------
Comment (by mduggan):
I took a look at the usecode. It seems to be a bug in the original game
script, I'm interested if it's triggered by the original game too.
Here's the part that prints the description:
{{{
0B70: 0F calli 04h 0011h (uword Item::getQuality())
0B74: 6E add sp -04h
0B76: 5E push retval
0B77: 0A push byte 65h
0B79: 24 cmp
0B7A: 51 jne 0026h (to 0BA3)
0B7D: 59 push pid
0B7E: 0D push string "Intervention "
0B8F: 6B str to ptr
0B90: 40 push dword [BP+06h]
0B92: 0F calli 08h 0049h (process Item::bark(char* str))
0B96: 65 free string [SP+04h]
0B98: 6E add sp -08h
0B9A: 5E push retval
0B9B: 54 implies 01 01
0B9E: 12 pop temp
0B9F: 53 suspend
0BA0: 52 jmp 02A6h (to 0E49)
0BA3: 40 push dword [BP+06h]
0BA5: 0F calli 04h 0011h (uword Item::getQuality())
0BA9: 6E add sp -04h
0BAB: 5E push retval
0BAC: 0A push byte 66h
0BAE: 24 cmp
0BAF: 51 jne 0026h (to 0BD8)
0BB2: 59 push pid
0BB3: 0D push string "Resurrection "
0BC4: 6B str to ptr
0BC5: 40 push dword [BP+06h]
0BC7: 0F calli 08h 0049h (process Item::bark(char* str))
}}}
So book type 0x65 should be Intervention, and book type 0x66 should be
Resurrection.
But then further down in the bit that actually opens the book:
{{{
1680: 0F calli 04h 0011h (uword Item::getQuality())
1684: 6E add sp -04h
1686: 5E push retval
1687: 0A push byte 65h
1689: 24 cmp
168A: 51 jne 0013h (to 16A0)
168D: 59 push pid
168E: 4B push addr [BP-02h]
1690: 57 spawn 00 02 0577:1B74 (SGBOOK::1B74)
1697: 5E push retval
1698: 54 implies 01 01
169B: 12 pop temp
169C: 53 suspend
169D: 52 jmp 02B8h (to 1958)
16A0: 40 push dword [BP+06h]
16A2: 0F calli 04h 0011h (uword Item::getQuality())
16A6: 6E add sp -04h
16A8: 5E push retval
16A9: 0A push byte 66h
16AB: 24 cmp
16AC: 51 jne 0013h (to 16C2)
16AF: 59 push pid
16B0: 4B push addr [BP-02h]
16B2: 57 spawn 00 02 0577:1B74 (SGBOOK::1B74)
16B9: 5E push retval
16BA: 54 implies 01 01
16BD: 12 pop temp
16BE: 53 suspend
16BF: 52 jmp 0296h (to 1958)
16C2: 40 push dword [BP+06h]
16C4: 0F calli 04h 0011h (uword Item::getQuality())
16C8: 6E add sp -04h
16CA: 5E push retval
16CB: 0A push byte 66h
16CD: 24 cmp
16CE: 51 jne 0013h (to 16E4)
16D1: 59 push pid
16D2: 4B push addr [BP-02h]
16D4: 57 spawn 00 02 0577:1D26 (SGBOOK::1D26)
16DB: 5E push retval
16DC: 54 implies 01 01
16DF: 12 pop temp
16E0: 53 suspend
16E1: 52 jmp 0274h (to 1958)
}}}
So both 0x65 and 0x66 spawn the same book contents (SGBOOK::1B74, "The
spell of Intervention ... "), but then a *second* branch for 0x66 spawns
the true Resurrection book contents (SGBOOK::1D26, "The Spell of
Resurrection").
I expect that the same bug existed in the original game and there's
actually no way to get the correct text here, but if the original behaves
differently I'd be really interested because it means we're not executing
the usecode exactly as the original.
--
Ticket URL: <https://bugs.scummvm.org/ticket/12503#comment:2>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list