Opened 10 years ago

Closed 10 years ago

#4834 closed defect (fixed)

DRACI: Corruption of Text Glyphs with Stumps and Credits

Reported by: digitall Owned by: rspalek
Priority: normal Component: Engine: Draci
Keywords: Cc:
Game: Dragon History

Description

The speech text glyphs are corrupted in a number of cases including on the Two Stumps Scene and during a number of the
slides of the closing credits.

ScummVM 1.1.0pre48399 (Mar 25 2010 02:42:50)
Features compiled in: Vorbis FLAC MP3 ALSA RGB zLib FluidSynth
built on Linux x86_32 2.6.31 by GCC 4.3.4

Ticket imported from: #2976767. Ticket imported from: bugs/4834.

Attachments (8)

scummvm00000.jpg (66.1 KB ) - added by digitall 10 years ago.
Screenshot of Stumps Scene Corruption
scummvm00002.jpg (74.0 KB ) - added by digitall 10 years ago.
Screenshot of Credits #1 Corruption
scummvm00003.jpg (67.0 KB ) - added by digitall 10 years ago.
Screenshot of Credits #2 Corruption
scummvm00004.jpg (70.1 KB ) - added by digitall 10 years ago.
Screenshot of Credits #3 Corruption
scummvm00005.jpg (64.5 KB ) - added by digitall 10 years ago.
Screenshot of Credits #4 Corruption
scummvm00006.jpg (58.1 KB ) - added by digitall 10 years ago.
Screenshot of Credits #5 Corruption
scummvm00007.jpg (59.3 KB ) - added by digitall 10 years ago.
Screenshot of Credits #6 Corruption
draci.s17 (20.3 KB ) - added by digitall 10 years ago.
Savegame at End for Credits Replication

Download all attachments as: .zip

Change History (12)

by digitall, 10 years ago

Attachment: scummvm00000.jpg added

Screenshot of Stumps Scene Corruption

by digitall, 10 years ago

Attachment: scummvm00002.jpg added

Screenshot of Credits #1 Corruption

by digitall, 10 years ago

Attachment: scummvm00003.jpg added

Screenshot of Credits #2 Corruption

by digitall, 10 years ago

Attachment: scummvm00004.jpg added

Screenshot of Credits #3 Corruption

by digitall, 10 years ago

Attachment: scummvm00005.jpg added

Screenshot of Credits #4 Corruption

by digitall, 10 years ago

Attachment: scummvm00006.jpg added

Screenshot of Credits #5 Corruption

by digitall, 10 years ago

Attachment: scummvm00007.jpg added

Screenshot of Credits #6 Corruption

by digitall, 10 years ago

Attachment: draci.s17 added

Savegame at End for Credits Replication

comment:1 by digitall, 10 years ago

Attached are screenshots of the corruption, which is not completely deterministic.

The attached savegame can be used to replicate, by loading then :
* Go to bottom of screen to access map
* Go To Dragons House
* Wait For Cutscene to complete
* Credits will be played with corruption as per screenshots supplied.

Running this with valgrind yields the following relevant output :
==6690== Invalid read of size 1
==6690== at 0x82C813E: Draci::Font::getStringWidth(Common::String const&, int) const (font.cpp:260)
==6690== by 0x82D656A: Draci::Text::setText(Common::String const&) (sprite.cpp:283)
==6690== by 0x82D3415: Draci::Script::talk(Common::Array<int> const&) (script.cpp:720)
==6690== by 0x82D4A22: Draci::Script::run(Draci::GPL2Program const&, unsigned short) (script.cpp:1173)
==6690== by 0x82D4B8B: Draci::Script::runWrapper(Draci::GPL2Program const&, unsigned short, bool, bool) (script.cpp:1199)
==6690== by 0x82CE50E: Draci::Game::enterNewRoom() (game.cpp:1303)
==6690== by 0x82CE5EE: Draci::Game::start() (game.cpp:165)
==6690== by 0x82C75D2: Draci::DraciEngine::run() (draci.cpp:365)
==6690== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216)
==6690== by 0x8056F69: scummvm_main (main.cpp:389)
==6690== by 0x8053451: main (main.cpp:65)
==6690== Address 0x63b695c is not stack'd, malloc'd or (recently) free'd
==6690==
==6690== Invalid read of size 1
==6690== at 0x82C813E: Draci::Font::getStringWidth(Common::String const&, int) const (font.cpp:260)
==6690== by 0x82C846B: Draci::Font::drawString(Draci::Surface*, Common::String const&, int, int, int, int, bool) const (font.cpp:212)
==6690== by 0x82D653B: Draci::Text::draw(Draci::Surface*, bool, int, int) const (sprite.cpp:297)
==6690== by 0x82D7629: Draci::Text::drawReScaled(Draci::Surface*, bool, Draci::Displacement const&) const (sprite.h:159)
==6690== by 0x82DAE06: Draci::Animation::drawFrame(Draci::Surface*) (animation.cpp:164)
==6690== by 0x82DBD00: Draci::AnimationManager::drawScene(Draci::Surface*) (animation.cpp:363)
==6690== by 0x82CBD23: Draci::Game::advanceAnimationsAndTestLoopExit() (game.cpp:470)
==6690== by 0x82CC478: Draci::Game::loop(Draci::LoopSubstatus, bool) (game.cpp:550)
==6690== by 0x82D3745: Draci::Script::talk(Common::Array<int> const&) (script.cpp:767)
==6690== by 0x82D4A22: Draci::Script::run(Draci::GPL2Program const&, unsigned short) (script.cpp:1173)
==6690== by 0x82D4B8B: Draci::Script::runWrapper(Draci::GPL2Program const&, unsigned short, bool, bool) (script.cpp:1199)
==6690== by 0x82CE50E: Draci::Game::enterNewRoom() (game.cpp:1303)
==6690== Address 0x63b695c is not stack'd, malloc'd or (recently) free'd
==6690==
==6690== Invalid read of size 1
==6690== at 0x82C809D: Draci::Font::getLineWidth(Common::String const&, unsigned int, int) const (font.cpp:295)
==6690== by 0x82C8504: Draci::Font::drawString(Draci::Surface*, Common::String const&, int, int, int, int, bool) const (font.cpp:223)
==6690== by 0x82D653B: Draci::Text::draw(Draci::Surface*, bool, int, int) const (sprite.cpp:297)
==6690== by 0x82D7629: Draci::Text::drawReScaled(Draci::Surface*, bool, Draci::Displacement const&) const (sprite.h:159)
==6690== by 0x82DAE06: Draci::Animation::drawFrame(Draci::Surface*) (animation.cpp:164)
==6690== by 0x82DBD00: Draci::AnimationManager::drawScene(Draci::Surface*) (animation.cpp:363)
==6690== by 0x82CBD23: Draci::Game::advanceAnimationsAndTestLoopExit() (game.cpp:470)
==6690== by 0x82CC478: Draci::Game::loop(Draci::LoopSubstatus, bool) (game.cpp:550)
==6690== by 0x82D3745: Draci::Script::talk(Common::Array<int> const&) (script.cpp:767)
==6690== by 0x82D4A22: Draci::Script::run(Draci::GPL2Program const&, unsigned short) (script.cpp:1173)
==6690== by 0x82D4B8B: Draci::Script::runWrapper(Draci::GPL2Program const&, unsigned short, bool, bool) (script.cpp:1199)
==6690== by 0x82CE50E: Draci::Game::enterNewRoom() (game.cpp:1303)
==6690== Address 0x63b695c is not stack'd, malloc'd or (recently) free'd
==6690==
==6690== Invalid read of size 1
==6690== at 0x82C828B: Draci::Font::drawChar(Draci::Surface*, unsigned char, int, int, int) const (font.cpp:131)
==6690== by 0x82C858B: Draci::Font::drawString(Draci::Surface*, Common::String const&, int, int, int, int, bool) const (font.cpp:232)
==6690== by 0x82D653B: Draci::Text::draw(Draci::Surface*, bool, int, int) const (sprite.cpp:297)
==6690== by 0x82D7629: Draci::Text::drawReScaled(Draci::Surface*, bool, Draci::Displacement const&) const (sprite.h:159)
==6690== by 0x82DAE06: Draci::Animation::drawFrame(Draci::Surface*) (animation.cpp:164)
==6690== by 0x82DBD00: Draci::AnimationManager::drawScene(Draci::Surface*) (animation.cpp:363)
==6690== by 0x82CBD23: Draci::Game::advanceAnimationsAndTestLoopExit() (game.cpp:470)
==6690== by 0x82CC478: Draci::Game::loop(Draci::LoopSubstatus, bool) (game.cpp:550)
==6690== by 0x82D3745: Draci::Script::talk(Common::Array<int> const&) (script.cpp:767)
==6690== by 0x82D4A22: Draci::Script::run(Draci::GPL2Program const&, unsigned short) (script.cpp:1173)
==6690== by 0x82D4B8B: Draci::Script::runWrapper(Draci::GPL2Program const&, unsigned short, bool, bool) (script.cpp:1199)
==6690== by 0x82CE50E: Draci::Game::enterNewRoom() (game.cpp:1303)
==6690== Address 0x63b695c is not stack'd, malloc'd or (recently) free'd
==6690==
==6690== Invalid read of size 1
==6690== at 0x82C7FA8: Draci::Font::getCharWidth(unsigned char) const (font.cpp:111)
==6690== by 0x82C85AF: Draci::Font::drawString(Draci::Surface*, Common::String const&, int, int, int, int, bool) const (font.cpp:233)
==6690== by 0x82D653B: Draci::Text::draw(Draci::Surface*, bool, int, int) const (sprite.cpp:297)
==6690== by 0x82D7629: Draci::Text::drawReScaled(Draci::Surface*, bool, Draci::Displacement const&) const (sprite.h:159)
==6690== by 0x82DAE06: Draci::Animation::drawFrame(Draci::Surface*) (animation.cpp:164)
==6690== by 0x82DBD00: Draci::AnimationManager::drawScene(Draci::Surface*) (animation.cpp:363)
==6690== by 0x82CBD23: Draci::Game::advanceAnimationsAndTestLoopExit() (game.cpp:470)
==6690== by 0x82CC478: Draci::Game::loop(Draci::LoopSubstatus, bool) (game.cpp:550)
==6690== by 0x82D3745: Draci::Script::talk(Common::Array<int> const&) (script.cpp:767)
==6690== by 0x82D4A22: Draci::Script::run(Draci::GPL2Program const&, unsigned short) (script.cpp:1173)
==6690== by 0x82D4B8B: Draci::Script::runWrapper(Draci::GPL2Program const&, unsigned short, bool, bool) (script.cpp:1199)
==6690== by 0x82CE50E: Draci::Game::enterNewRoom() (game.cpp:1303)

comment:2 by fingolfin, 10 years ago

Owner: set to rspalek

comment:3 by rspalek, 10 years ago

Fixed by commit 48462.

comment:4 by rspalek, 10 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.