[Scummvm-cvs-logs] CVS: scummvm gfx.cpp,1.71,1.72 script_v2.cpp,1.44,1.45 scumm.h,1.127,1.128

Vincent Hamm yazoo at users.sourceforge.net
Fri Apr 19 07:31:37 CEST 2002


Update of /cvsroot/scummvm/scummvm
In directory usw-pr-cvs1:/tmp/cvs-serv30277

Modified Files:
	gfx.cpp script_v2.cpp scumm.h 
Log Message:
More or less finished flashlight code. The effect isn't 100% accurate

Index: gfx.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gfx.cpp,v
retrieving revision 1.71
retrieving revision 1.72
diff -C2 -d -r1.71 -r1.72
*** gfx.cpp	18 Apr 2002 15:34:45 -0000	1.71
--- gfx.cpp	19 Apr 2002 13:57:17 -0000	1.72
***************
*** 2639,2640 ****
--- 2639,2706 ----
  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

Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/script_v2.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -C2 -d -r1.44 -r1.45
*** script_v2.cpp	19 Apr 2002 12:38:03 -0000	1.44
--- script_v2.cpp	19 Apr 2002 13:57:17 -0000	1.45
***************
*** 2799,2811 ****
  		case 108:									/* create proc_special_palette */
  		case 109:
! 			int i;
! 			byte j;
! 			for(i=0;i<256;i++)
! 			{
! 				j=rand();
! 				_proc_special_palette[i]=j;
! 			}
! 			warning("stub o6_miscOps_108(%d,%d,%d,%d,%d,%d,%d)", args[1], args[2],
! 							args[3], args[4], args[5], 0, 256);
  			break;
  
--- 2799,2803 ----
  		case 108:									/* create proc_special_palette */
  		case 109:
! 			createSpecialPalette(args[1], args[2],args[3], args[4], args[5], 0, 256);
  			break;
  

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm.h,v
retrieving revision 1.127
retrieving revision 1.128
diff -C2 -d -r1.127 -r1.128
*** scumm.h	19 Apr 2002 12:38:03 -0000	1.127
--- scumm.h	19 Apr 2002 13:57:18 -0000	1.128
***************
*** 1134,1138 ****
  	void initVirtScreen(int slot, int top, int height, bool twobufs, bool fourextra);
  	void initBGBuffers();
! 	void initCycl(byte *ptr);	// Color cycle
  
  	void drawObject(int obj, int arg);	
--- 1134,1139 ----
  	void initVirtScreen(int slot, int top, int height, bool twobufs, bool fourextra);
  	void initBGBuffers();
! 	void initCycl(byte *ptr);	// Color cycle
! 	void createSpecialPalette(int16 a, int16 b, int16 c, int16 d, int16 e, int16 colorMin, int16 colorMax);
  
  	void drawObject(int obj, int arg);	





More information about the Scummvm-git-logs mailing list