diff options
author | Max Horn | 2004-01-30 20:57:23 +0000 |
---|---|---|
committer | Max Horn | 2004-01-30 20:57:23 +0000 |
commit | 2f8d19d0046b6aa4c2229d081fc44fc7ae55a8ed (patch) | |
tree | 85589d0149bd3c377fb885a22ff0aa529f789d20 /sword1 | |
parent | c7424312c32d6cc27c3b052720ad252e94f28c37 (diff) | |
download | scummvm-rg350-2f8d19d0046b6aa4c2229d081fc44fc7ae55a8ed.tar.gz scummvm-rg350-2f8d19d0046b6aa4c2229d081fc44fc7ae55a8ed.tar.bz2 scummvm-rg350-2f8d19d0046b6aa4c2229d081fc44fc7ae55a8ed.zip |
avoid using huge static structs - they can't be stripped, and increase the exe size (in this case, 16 MB...)
svn-id: r12678
Diffstat (limited to 'sword1')
-rw-r--r-- | sword1/animation.cpp | 22 | ||||
-rw-r--r-- | sword1/animation.h | 6 |
2 files changed, 13 insertions, 15 deletions
diff --git a/sword1/animation.cpp b/sword1/animation.cpp index c289ea86a1..c6ea7bc0cb 100644 --- a/sword1/animation.cpp +++ b/sword1/animation.cpp @@ -103,7 +103,7 @@ bool AnimationState::init(const char *basename) { lut2 = lookup[1]; lutcalcnum = (BITDEPTH + palettes[palnum].end + 2) / (palettes[palnum].end + 2); #else - buildLookup2(); + buildLookup(); overlay = (NewGuiColor*)calloc(640 * 400, sizeof(NewGuiColor)); _sys->show_overlay(); #endif @@ -217,13 +217,13 @@ bool AnimationState::checkPaletteSwitch() { #else -bool AnimationState::lookupInit = false; -NewGuiColor AnimationState::lookup2[BITDEPTH * BITDEPTH * 256]; +NewGuiColor *AnimationState::lookup = 0; -void AnimationState::buildLookup2() { +void AnimationState::buildLookup() { + if (lookup) + return; - if (lookupInit) return; - lookupInit = true; + lookup = (NewGuiColor *)calloc(BITDEPTH * BITDEPTH * 256, sizeof(NewGuiColor)); int y, cb, cr; int r, g, b; @@ -237,13 +237,13 @@ void AnimationState::buildLookup2() { b = ((y-16) * 256 + (int) (2.018 * 256) * ((cb << SHIFT) - 128)) / 256; if (r < 0) r = 0; - if (r > 255) r = 255; + else if (r > 255) r = 255; if (g < 0) g = 0; - if (g > 255) g = 255; + else if (g > 255) g = 255; if (b < 0) b = 0; - if (b > 255) b = 255; + else if (b > 255) b = 255; - lookup2[pos++] = _sys->RGBToColor(r, g, b); + lookup[pos++] = _sys->RGBToColor(r, g, b); } } } @@ -340,7 +340,7 @@ bool AnimationState::decodeFrame() { #else if ((bgSoundStream == NULL) || (bgSoundStream->getSamplesPlayed()*12/bgSoundStream->getRate()) < (framenum+3)){ - plotYUV(lookup2, sequence_i->width, sequence_i->height, info->display_fbuf->buf); + plotYUV(lookup, sequence_i->width, sequence_i->height, info->display_fbuf->buf); if (bgSoundStream) { while ((bgSoundStream->getSamplesPlayed()*12/bgSoundStream->getRate()) < framenum+1) diff --git a/sword1/animation.h b/sword1/animation.h index 61f2b788ac..cee94f341f 100644 --- a/sword1/animation.h +++ b/sword1/animation.h @@ -111,10 +111,8 @@ private: byte pal[4 * 256]; } palettes[50]; #else - static NewGuiColor lookup2[BITDEPTH * BITDEPTH * 256]; + static NewGuiColor *lookup; NewGuiColor * overlay; - static bool lookupInit; - #endif public: @@ -131,7 +129,7 @@ private: void buildLookup(int p, int lines); bool checkPaletteSwitch(); #else - void buildLookup2(void); + void buildLookup(void); void plotYUV(NewGuiColor *lut, int width, int height, byte *const *dat); #endif }; |