Menu

#4834 DRACI: Corruption of Text Glyphs with Stumps and Credits

Dragon History
closed-fixed
Graphics (902)
5
2010-04-02
2010-03-25
digitall
No

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

Discussion

  • digitall

    digitall - 2010-03-25

    Screenshot of Stumps Scene Corruption

     
  • digitall

    digitall - 2010-03-25

    Screenshot of Credits #1 Corruption

     
  • digitall

    digitall - 2010-03-25

    Screenshot of Credits #2 Corruption

     
  • digitall

    digitall - 2010-03-25

    Screenshot of Credits #3 Corruption

     
  • digitall

    digitall - 2010-03-25

    Screenshot of Credits #4 Corruption

     
  • digitall

    digitall - 2010-03-25

    Screenshot of Credits #5 Corruption

     
  • digitall

    digitall - 2010-03-25

    Screenshot of Credits #6 Corruption

     
  • digitall

    digitall - 2010-03-25

    Savegame at End for Credits Replication

     
  • digitall

    digitall - 2010-03-25

    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)

     
  • Max Horn

    Max Horn - 2010-03-28
    • assigned_to: nobody --> spalek
     
  • Robert Spalek

    Robert Spalek - 2010-04-02

    Fixed by commit 48462.

     
  • Robert Spalek

    Robert Spalek - 2010-04-02
    • status: open --> closed-fixed