Opened 8 years ago
Closed 7 years ago
#9733 closed patch (fixed)
KYRA1: Crash: engines/kyra/screen_lok.cpp:77: void Kyra::Screen_LoK::fadeSpecialPalette(int, int, int, int): Assertion `_vm->palTable1()[palIndex]' failed.
Reported by: | sergesv | Owned by: | csnover |
---|---|---|---|
Priority: | blocker | Component: | Engine: Kyra |
Version: | Keywords: | has-save-game has-patch | |
Cc: | Game: | Kyrandia 1 |
Description
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:
- Get unpacked Legend of Kyrandia floppies
- Apply russian translation (http://katkov.net/Kyrandia/dl/kyrand1r.exe can be unpacked with 7-zip)
- Play until the kyragem room. Or just load a savegame (attached)
- Put scepter in place. Watch you talking to Malkolm, walking into kyragem room
- 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).
Attachments (3)
Change History (7)
by , 8 years ago
Attachment: | kyra1-ru.032 added |
---|
by , 8 years ago
Attachment: | scummvm-1.9.0-crashfix.patch added |
---|
by , 8 years ago
Attachment: | kyra.dat.updated added |
---|
comment:1 by , 7 years ago
Keywords: | crash patch removed |
---|---|
Priority: | normal → blocker |
comment:2 by , 7 years ago
Keywords: | has-save-game has-patch added |
---|
comment:3 by , 7 years ago
Owner: | set to |
---|
Thanks for your report and patch! Your patch for this issue has been added in commit cf61174396cdbbf371cb26bac753a190277da6e5 and will be available in daily builds 1.10.0git-5488 and later.
comment:4 by , 7 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Savegame just before the crash