⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blender.cpp

📁 diablo 游戏部分源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// from ALLEGRO  By Shawn Hargreaves
// Optimised by Cloud Wu and Burton Radons.

#include "constant.h"

#pragma off( check_stack )
// 16 and 15 bits color mode alpha blender 

/* macro for constructing the blender routines */
#define BLEND16(n)                                                             \
									     \
   static unsigned long blend16_##n(unsigned long x, unsigned long y)        \
   {                                                                         \
      unsigned long result;                                                  \
									     \
      x = ((x&0xFFFF) | (x<<16)) & 0x7E0F81F;                                \
      y = ((y&0xFFFF) | (y<<16)) & 0x7E0F81F;                                \
									     \
      result = ((x - y) * (n*32/31) / 32 + y) & 0x7E0F81F;                   \
									     \
      return ((result&0xFFFF) | (result>>16));                               \
   }

BLEND16(0)   BLEND16(1)   BLEND16(2)   BLEND16(3) 
BLEND16(4)   BLEND16(5)   BLEND16(6)   BLEND16(7) 
BLEND16(8)   BLEND16(9)   BLEND16(10)  BLEND16(11) 
BLEND16(12)  BLEND16(13)  BLEND16(14)  BLEND16(15) 
BLEND16(16)  BLEND16(17)  BLEND16(18)  BLEND16(19) 
BLEND16(20)  BLEND16(21)  BLEND16(22)  BLEND16(23) 
BLEND16(24)  BLEND16(25)  BLEND16(26)  BLEND16(27) 
BLEND16(28)  BLEND16(29)  BLEND16(30)  BLEND16(31) 

BlenderMap transBlender16 = 
{ {
   blend16_0,  blend16_0,  blend16_0,  blend16_0,
   blend16_0,  blend16_0,  blend16_0,  blend16_0,
   blend16_1,  blend16_1,  blend16_1,  blend16_1,
   blend16_1,  blend16_1,  blend16_1,  blend16_1,
   blend16_2,  blend16_2,  blend16_2,  blend16_2,
   blend16_2,  blend16_2,  blend16_2,  blend16_2,
   blend16_3,  blend16_3,  blend16_3,  blend16_3,
   blend16_3,  blend16_3,  blend16_3,  blend16_3,
   blend16_4,  blend16_4,  blend16_4,  blend16_4,
   blend16_4,  blend16_4,  blend16_4,  blend16_4,
   blend16_5,  blend16_5,  blend16_5,  blend16_5,
   blend16_5,  blend16_5,  blend16_5,  blend16_5,
   blend16_6,  blend16_6,  blend16_6,  blend16_6,
   blend16_6,  blend16_6,  blend16_6,  blend16_6,
   blend16_7,  blend16_7,  blend16_7,  blend16_7,
   blend16_7,  blend16_7,  blend16_7,  blend16_7,
   blend16_8,  blend16_8,  blend16_8,  blend16_8,
   blend16_8,  blend16_8,  blend16_8,  blend16_8,
   blend16_9,  blend16_9,  blend16_9,  blend16_9,
   blend16_9,  blend16_9,  blend16_9,  blend16_9,
   blend16_10, blend16_10, blend16_10, blend16_10,
   blend16_10, blend16_10, blend16_10, blend16_10,
   blend16_11, blend16_11, blend16_11, blend16_11,
   blend16_11, blend16_11, blend16_11, blend16_11,
   blend16_12, blend16_12, blend16_12, blend16_12,
   blend16_12, blend16_12, blend16_12, blend16_12,
   blend16_13, blend16_13, blend16_13, blend16_13,
   blend16_13, blend16_13, blend16_13, blend16_13,
   blend16_14, blend16_14, blend16_14, blend16_14,
   blend16_14, blend16_14, blend16_14, blend16_14,
   blend16_15, blend16_15, blend16_15, blend16_15,
   blend16_15, blend16_15, blend16_15, blend16_15,
   blend16_16, blend16_16, blend16_16, blend16_16,
   blend16_16, blend16_16, blend16_16, blend16_16,
   blend16_17, blend16_17, blend16_17, blend16_17,
   blend16_17, blend16_17, blend16_17, blend16_17,
   blend16_18, blend16_18, blend16_18, blend16_18,
   blend16_18, blend16_18, blend16_18, blend16_18,
   blend16_19, blend16_19, blend16_19, blend16_19,
   blend16_19, blend16_19, blend16_19, blend16_19,
   blend16_20, blend16_20, blend16_20, blend16_20,
   blend16_20, blend16_20, blend16_20, blend16_20,
   blend16_21, blend16_21, blend16_21, blend16_21,
   blend16_21, blend16_21, blend16_21, blend16_21,
   blend16_22, blend16_22, blend16_22, blend16_22,
   blend16_22, blend16_22, blend16_22, blend16_22,
   blend16_23, blend16_23, blend16_23, blend16_23,
   blend16_23, blend16_23, blend16_23, blend16_23,
   blend16_24, blend16_24, blend16_24, blend16_24,
   blend16_24, blend16_24, blend16_24, blend16_24,
   blend16_25, blend16_25, blend16_25, blend16_25,
   blend16_25, blend16_25, blend16_25, blend16_25,
   blend16_26, blend16_26, blend16_26, blend16_26,
   blend16_26, blend16_26, blend16_26, blend16_26,
   blend16_27, blend16_27, blend16_27, blend16_27,
   blend16_27, blend16_27, blend16_27, blend16_27,
   blend16_28, blend16_28, blend16_28, blend16_28,
   blend16_28, blend16_28, blend16_28, blend16_28,
   blend16_29, blend16_29, blend16_29, blend16_29,
   blend16_29, blend16_29, blend16_29, blend16_29,
   blend16_30, blend16_30, blend16_30, blend16_30,
   blend16_30, blend16_30, blend16_30, blend16_30,
   blend16_31, blend16_31, blend16_31, blend16_31,
   blend16_31, blend16_31, blend16_31, blend16_31,
} };

///////////////////////////////////////////////////////////////////////////////////////////////
/* macro for constructing the blender routines */
#define BLEND15(n)                                                             \
									     \
   static unsigned long blend15_##n(unsigned long x, unsigned long y)        \
   {                                                                         \
      unsigned long result;                                                  \
									     \
      x = ((x&0xFFFF) | (x<<16)) & 0x3E07C1F;                                \
      y = ((y&0xFFFF) | (y<<16)) & 0x3E07C1F;                                \
									     \
      result = ((x - y) * (n*32/31) / 32 + y) & 0x3E07C1F;                   \
									     \
      return ((result&0xFFFF) | (result>>16));                               \
   }



/* declare 32 interpolation functions (one for each alpha) */ 
BLEND15(0)   BLEND15(1)   BLEND15(2)   BLEND15(3) 
BLEND15(4)   BLEND15(5)   BLEND15(6)   BLEND15(7) 
BLEND15(8)   BLEND15(9)   BLEND15(10)  BLEND15(11) 
BLEND15(12)  BLEND15(13)  BLEND15(14)  BLEND15(15) 
BLEND15(16)  BLEND15(17)  BLEND15(18)  BLEND15(19) 
BLEND15(20)  BLEND15(21)  BLEND15(22)  BLEND15(23) 
BLEND15(24)  BLEND15(25)  BLEND15(26)  BLEND15(27) 
BLEND15(28)  BLEND15(29)  BLEND15(30)  BLEND15(31) 



/* and list them all in a table */ 
BlenderMap transBlender15 = 
{ {
   blend15_0,  blend15_0,  blend15_0,  blend15_0,
   blend15_0,  blend15_0,  blend15_0,  blend15_0,
   blend15_1,  blend15_1,  blend15_1,  blend15_1,
   blend15_1,  blend15_1,  blend15_1,  blend15_1,
   blend15_2,  blend15_2,  blend15_2,  blend15_2,
   blend15_2,  blend15_2,  blend15_2,  blend15_2,
   blend15_3,  blend15_3,  blend15_3,  blend15_3,
   blend15_3,  blend15_3,  blend15_3,  blend15_3,
   blend15_4,  blend15_4,  blend15_4,  blend15_4,
   blend15_4,  blend15_4,  blend15_4,  blend15_4,
   blend15_5,  blend15_5,  blend15_5,  blend15_5,
   blend15_5,  blend15_5,  blend15_5,  blend15_5,
   blend15_6,  blend15_6,  blend15_6,  blend15_6,
   blend15_6,  blend15_6,  blend15_6,  blend15_6,
   blend15_7,  blend15_7,  blend15_7,  blend15_7,
   blend15_7,  blend15_7,  blend15_7,  blend15_7,
   blend15_8,  blend15_8,  blend15_8,  blend15_8,
   blend15_8,  blend15_8,  blend15_8,  blend15_8,
   blend15_9,  blend15_9,  blend15_9,  blend15_9,
   blend15_9,  blend15_9,  blend15_9,  blend15_9,
   blend15_10, blend15_10, blend15_10, blend15_10,
   blend15_10, blend15_10, blend15_10, blend15_10,
   blend15_11, blend15_11, blend15_11, blend15_11,
   blend15_11, blend15_11, blend15_11, blend15_11,
   blend15_12, blend15_12, blend15_12, blend15_12,
   blend15_12, blend15_12, blend15_12, blend15_12,
   blend15_13, blend15_13, blend15_13, blend15_13,
   blend15_13, blend15_13, blend15_13, blend15_13,
   blend15_14, blend15_14, blend15_14, blend15_14,
   blend15_14, blend15_14, blend15_14, blend15_14,
   blend15_15, blend15_15, blend15_15, blend15_15,
   blend15_15, blend15_15, blend15_15, blend15_15,
   blend15_16, blend15_16, blend15_16, blend15_16,
   blend15_16, blend15_16, blend15_16, blend15_16,
   blend15_17, blend15_17, blend15_17, blend15_17,
   blend15_17, blend15_17, blend15_17, blend15_17,
   blend15_18, blend15_18, blend15_18, blend15_18,
   blend15_18, blend15_18, blend15_18, blend15_18,
   blend15_19, blend15_19, blend15_19, blend15_19,
   blend15_19, blend15_19, blend15_19, blend15_19,
   blend15_20, blend15_20, blend15_20, blend15_20,
   blend15_20, blend15_20, blend15_20, blend15_20,
   blend15_21, blend15_21, blend15_21, blend15_21,
   blend15_21, blend15_21, blend15_21, blend15_21,
   blend15_22, blend15_22, blend15_22, blend15_22,
   blend15_22, blend15_22, blend15_22, blend15_22,
   blend15_23, blend15_23, blend15_23, blend15_23,
   blend15_23, blend15_23, blend15_23, blend15_23,
   blend15_24, blend15_24, blend15_24, blend15_24,
   blend15_24, blend15_24, blend15_24, blend15_24,
   blend15_25, blend15_25, blend15_25, blend15_25,
   blend15_25, blend15_25, blend15_25, blend15_25,
   blend15_26, blend15_26, blend15_26, blend15_26,
   blend15_26, blend15_26, blend15_26, blend15_26,
   blend15_27, blend15_27, blend15_27, blend15_27,
   blend15_27, blend15_27, blend15_27, blend15_27,
   blend15_28, blend15_28, blend15_28, blend15_28,
   blend15_28, blend15_28, blend15_28, blend15_28,
   blend15_29, blend15_29, blend15_29, blend15_29,
   blend15_29, blend15_29, blend15_29, blend15_29,
   blend15_30, blend15_30, blend15_30, blend15_30,
   blend15_30, blend15_30, blend15_30, blend15_30,
   blend15_31, blend15_31, blend15_31, blend15_31,
   blend15_31, blend15_31, blend15_31, blend15_31,
} };


#define BRIGHTNESS16( n ) 	\
							\
	static unsigned long brightness16_##n( unsigned long a )	\
	{															\
		unsigned long result;												\
		result = ((((a&0xffff) | (a<<16)) & 0x7e0f81f ) * n / 32 ) & 0x7e0f81f;	\
		return ( result | ( result >> 16 ));					\
	}

BRIGHTNESS16( 3 )	 BRIGHTNESS16( 5 )
BRIGHTNESS16( 6 )	 BRIGHTNESS16( 7 )	 BRIGHTNESS16( 9 )
BRIGHTNESS16( 10 )	BRIGHTNESS16( 11 )
BRIGHTNESS16( 13 )	BRIGHTNESS16( 14 )	BRIGHTNESS16( 15 )
BRIGHTNESS16( 17 )	BRIGHTNESS16( 18 )	BRIGHTNESS16( 19 )
BRIGHTNESS16( 21 )	BRIGHTNESS16( 22 )
BRIGHTNESS16( 23 )	BRIGHTNESS16( 25 )	BRIGHTNESS16( 26 )
BRIGHTNESS16( 27 )	BRIGHTNESS16( 28 )	BRIGHTNESS16( 29 )
BRIGHTNESS16( 30 )	BRIGHTNESS16( 31 )

static unsigned long brightness16_0( unsigned long a )
{
	return 0;
}

static unsigned long brightness16_1( unsigned long a )
{
	return 0;
}

static unsigned long brightness16_2( unsigned long a )
{
	return ( a >> 4 ) & 0x0861;
}

static unsigned long brightness16_4( unsigned long a )
{
	return ( a >> 3 ) & 0x18e3;
}

static unsigned long brightness16_8( unsigned long a )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -