diff options
author | Vincent Hamm | 2002-04-19 13:57:18 +0000 |
---|---|---|
committer | Vincent Hamm | 2002-04-19 13:57:18 +0000 |
commit | 86b9713cddd734a8a6a43e0ed75ef3120b89c17f (patch) | |
tree | ec408dab84d82bb39ddcb01b74663ee3ecab5fc9 /gfx.cpp | |
parent | 708799f8dba34112d945ceebc3171cd0ece126de (diff) | |
download | scummvm-rg350-86b9713cddd734a8a6a43e0ed75ef3120b89c17f.tar.gz scummvm-rg350-86b9713cddd734a8a6a43e0ed75ef3120b89c17f.tar.bz2 scummvm-rg350-86b9713cddd734a8a6a43e0ed75ef3120b89c17f.zip |
More or less finished flashlight code. The effect isn't 100% accurate
svn-id: r4007
Diffstat (limited to 'gfx.cpp')
-rw-r--r-- | gfx.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
@@ -2638,3 +2638,69 @@ void Scumm::drawBomp(BompDrawData * bd) CHECK_HEAP; } + +void Scumm::createSpecialPalette(int16 a, int16 b, int16 c, int16 d, int16 e, int16 colorMin, int16 colorMax) +{ + byte *palPtr; + byte *curPtr; + byte *searchPtr; + + byte colorComp1; + byte colorComp2; + byte colorComp3; + + byte searchComp1; + byte searchComp2; + byte searchComp3; + + short int bestResult; + short int currentResult; + byte currentIndex; + + int i; + int j; + + palPtr = getPalettePtr(); + + for(i=colorMin;i<colorMax;i++) + _proc_special_palette[i]=i; + + curPtr = palPtr + colorMin*3; + + for(i=colorMin;i<colorMax;i++) + { + /* colorComp1=((((*curPtr++)>>2)*c)>>8)&0x7F; + colorComp2=((((*curPtr++)>>2)*d)>>8)&0x7F; + colorComp3=((((*curPtr++)>>2)*e)>>8)&0x7F;*/ + + /* Yazoo: I can't get the right formula, so I made one that just work fine with SamnMax flashlight */ + + colorComp1=(*curPtr++)+10; + colorComp2=(*curPtr++)+10; + colorComp3=(*curPtr++)+10; + + + searchPtr = palPtr; + bestResult = 0x7FFF; + currentIndex = 0; + + for(j=0;j<256;j++) + { + searchComp1 = (*searchPtr++); + searchComp2 = (*searchPtr++); + searchComp3 = (*searchPtr++); + + currentResult = abs(searchComp1-colorComp1) + abs(searchComp2-colorComp2) + abs(searchComp3-colorComp3); + + if(currentResult<bestResult) + if(currentIndex >= a && currentIndex <= b) + { + _proc_special_palette[i]=currentIndex; + bestResult=currentResult; + } + + currentIndex++; + } + + } +}
\ No newline at end of file |