[Scummvm-tracker] [ScummVM] #9733: KYRA1: Crash: engines/kyra/screen_lok.cpp:77: void Kyra::Screen_LoK::fadeSpecialPalette(int, int, int, int): Assertion `_vm->palTable1()[palIndex]' failed.
sergesv
trac at scummvm.org
Wed Apr 19 03:57:00 CEST 2017
#9733: KYRA1: Crash: engines/kyra/screen_lok.cpp:77: void
Kyra::Screen_LoK::fadeSpecialPalette(int, int, int, int): Assertion
`_vm->palTable1()[palIndex]' failed.
-------------------------+--------------------------
Reporter: sergesv | Owner: (none)
Type: patch | Status: new
Priority: normal | Component: Engine: Kyra
Keywords: crash, patch | Game: Kyrandia 1
-------------------------+--------------------------
Tested in scummvm 1.5.0/1.7.0/1.9.0 on linux/android.
KyraEngine_LoK::seq_playEnd() calls fadeSpecialPalette(32, 228, 20, 60),
which for palIndex=32 uses k1SpecialPalette33, which is not provided for
OLDFLOPPY flags (could be a copy-paste error), and crashes ScummVM.
Attached patch fixes that.
**Steps to reproduce**:
OLDFLOPPY is used for russian translation, so it's the easiest way to
test:
1. Get unpacked Legend of Kyrandia floppies
2. Apply russian translation (http://katkov.net/Kyrandia/dl/kyrand1r.exe
can be unpacked with 7-zip)
3. Play until the kyragem room. Or just load a savegame (attached)
4. Put scepter in place. Watch you talking to Malkolm, walking into
kyragem room
5. Stand in front of the mirror on the right side of the room, and become
invisible by pressing the big red gem in the bottom right corner of the
screen. Watch Malcolm spell reflecting from the mirror and see what
happens next.
**Expected result**:
Something good.
**Actual result**:
ScummVM crashes:
scummvm: engines/kyra/screen_lok.cpp:77: void
Kyra::Screen_LoK::fadeSpecialPalette(int, int, int, int): Assertion
`_vm->palTable1()[palIndex]' failed.
{{{
(gdb) bt
#0 0xb7b20417 in raise () from /lib/i386-linux-gnu/libc.so.6
#1 0xb7b23802 in abort () from /lib/i386-linux-gnu/libc.so.6
#2 0xb7b19617 in __assert_fail () from /lib/i386-linux-gnu/libc.so.6
#3 0x0809c3aa in Kyra::Screen_LoK::fadeSpecialPalette (this=0x85e0908,
palIndex=32, startIndex=228, size=20, fadeTime=60) at
engines/kyra/screen_lok.cpp:77
#4 0x080d20a2 in Kyra::KyraEngine_LoK::seq_playEnd (this=0x85dae50) at
engines/kyra/sequences_lok.cpp:1090
#5 0x08062c7e in Kyra::KyraEngine_LoK::mainLoop (this=0x85dae50) at
engines/kyra/kyra_lok.cpp:444
#6 0x08062417 in Kyra::KyraEngine_LoK::go (this=0x85dae50) at
engines/kyra/kyra_lok.cpp:336
#7 0x0806494d in Kyra::KyraEngine_v1::run (this=0x85dae50) at
./engines/kyra/kyra_v1.h:255
#8 0x08050d8f in runGame (plugin=0x847df38, system=..., edebuglevels=...)
at base/main.cpp:260
#9 0x08051db9 in scummvm_main (argc=4, argv=0xbffffba4) at
base/main.cpp:522
#10 0x0804f288 in main (argc=4, argv=0xbffffba4) at
backends/platform/sdl/posix/posix-main.cpp:45
}}}
**Suggested solution**:
I copy-pasted k1SpecialPalette33 from lok_dos_english.h to
lok_dos_oldfloppy.h (patch attached), and regenerated kyra.dat (attached).
--
Ticket URL: <https://bugs.scummvm.org/ticket/9733>
ScummVM <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list