Fix the twin ball elevator

svn-id: r4020
This commit is contained in:
Vincent Hamm 2002-04-20 09:30:04 +00:00
parent eb773b477a
commit db2e803831
3 changed files with 8 additions and 70 deletions

View file

@ -702,6 +702,9 @@ void CostumeRenderer::proc_special(Actor *a, byte mask2)
byte shadow4;
byte shadow5;
if(a->costume==153) //Samnmax elevator FIXME
return;
shadow1=a->shadow_mode & 0x80;
shadow2=a->shadow_mode & 0x40;
shadow3=a->shadow_mode & 0x20;

70
gfx.cpp
View file

@ -2641,131 +2641,67 @@ 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;*/
//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++;
}
}
}

View file

@ -2812,8 +2812,7 @@ void Scumm::o6_miscOps()
break;
case 112: /* palette shift? */
warning("stub o6_miscOps_112(%d,%d,%d,%d,%d,%d,%d)",
args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
createSpecialPalette(args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
break;
case 114: /* palette? */