aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Hamm2002-04-20 09:30:04 +0000
committerVincent Hamm2002-04-20 09:30:04 +0000
commitdb2e80383196f6837a618183a1e79b11bf7aab27 (patch)
tree37097bf72080297393e1ee1f3c807da66776c64b
parenteb773b477a669427ff84e422bbdb1c3d6b63e8ef (diff)
downloadscummvm-rg350-db2e80383196f6837a618183a1e79b11bf7aab27.tar.gz
scummvm-rg350-db2e80383196f6837a618183a1e79b11bf7aab27.tar.bz2
scummvm-rg350-db2e80383196f6837a618183a1e79b11bf7aab27.zip
Fix the twin ball elevator
svn-id: r4020
-rw-r--r--costume.cpp5
-rw-r--r--gfx.cpp70
-rw-r--r--script_v2.cpp3
3 files changed, 8 insertions, 70 deletions
diff --git a/costume.cpp b/costume.cpp
index 3756acbb7e..3c0aabd3b7 100644
--- a/costume.cpp
+++ b/costume.cpp
@@ -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;
@@ -761,7 +764,7 @@ void CostumeRenderer::proc_special(Actor *a, byte mask2)
{
pcolor=_vm->_proc_special_palette[*dst];
}
-proc_special_end:; *dst = pcolor;
+proc_special_end:; *dst = pcolor;
}
}
dst += 320;
diff --git a/gfx.cpp b/gfx.cpp
index 1db8e99d81..92b92449da 100644
--- a/gfx.cpp
+++ b/gfx.cpp
@@ -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++;
-
}
-
-
-
}
} \ No newline at end of file
diff --git a/script_v2.cpp b/script_v2.cpp
index e61a42448e..65326c44aa 100644
--- a/script_v2.cpp
+++ b/script_v2.cpp
@@ -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? */