| 
									
										
										
										
											2013-04-17 23:29:41 -04:00
										 |  |  | // Copyright 2013 Dolphin Emulator Project
 | 
					
						
							|  |  |  | // Licensed under GPLv2
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 13:54:46 -05:00
										 |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-17 05:18:15 -05:00
										 |  |  | #include "VideoBackends/Software/BPMemLoader.h"
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-29 20:55:07 -04:00
										 |  |  | class PointerWrap; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | class Tev | 
					
						
							| 
									
										
										
										
											2013-10-29 01:23:17 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	struct InputRegType | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		unsigned a : 8; | 
					
						
							|  |  |  | 		unsigned b : 8; | 
					
						
							|  |  |  | 		unsigned c : 8; | 
					
						
							|  |  |  | 		signed   d : 11; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct TextureCoordinateType | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		signed s : 24; | 
					
						
							|  |  |  | 		signed t : 24; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	// color order: ABGR
 | 
					
						
							|  |  |  | 	s16 Reg[4][4]; | 
					
						
							|  |  |  | 	s16 KonstantColors[4][4]; | 
					
						
							|  |  |  | 	s16 TexColor[4]; | 
					
						
							|  |  |  | 	s16 RasColor[4]; | 
					
						
							|  |  |  | 	s16 StageKonst[4]; | 
					
						
							|  |  |  | 	s16 Zero16[4]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-31 06:45:18 +00:00
										 |  |  | 	s16 FixedConstants[9]; | 
					
						
							|  |  |  | 	u8 AlphaBump; | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	u8 IndirectTex[4][4]; | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 	TextureCoordinateType TexCoord; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	s16 *m_ColorInputLUT[16][3]; | 
					
						
							|  |  |  | 	s16 *m_AlphaInputLUT[8];        // values must point to ABGR color
 | 
					
						
							|  |  |  | 	s16 *m_KonstLUT[32][4]; | 
					
						
							|  |  |  | 	s16 m_BiasLUT[4]; | 
					
						
							|  |  |  | 	u8 m_ScaleLShiftLUT[4]; | 
					
						
							|  |  |  | 	u8 m_ScaleRShiftLUT[4]; | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-31 06:45:18 +00:00
										 |  |  | 	// enumeration for color input LUT
 | 
					
						
							|  |  |  | 	enum | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		BLU_INP, | 
					
						
							|  |  |  | 		GRN_INP, | 
					
						
							| 
									
										
										
										
											2013-10-29 01:23:17 -04:00
										 |  |  | 		RED_INP | 
					
						
							| 
									
										
										
										
											2010-12-31 06:45:18 +00:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-02 05:38:48 +00:00
										 |  |  | 	enum BufferBase | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		DIRECT = 0, | 
					
						
							|  |  |  | 		DIRECT_TFETCH = 16, | 
					
						
							|  |  |  | 		INDIRECT = 32 | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	void SetRasColor(int colorChan, int swaptable); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-24 14:42:04 +01:00
										 |  |  | 	void DrawColorRegular(TevStageCombiner::ColorCombiner& cc, const InputRegType inputs[4]); | 
					
						
							|  |  |  | 	void DrawColorCompare(TevStageCombiner::ColorCombiner& cc, const InputRegType inputs[4]); | 
					
						
							|  |  |  | 	void DrawAlphaRegular(TevStageCombiner::AlphaCombiner& ac, const InputRegType inputs[4]); | 
					
						
							|  |  |  | 	void DrawAlphaCompare(TevStageCombiner::AlphaCombiner& ac, const InputRegType inputs[4]); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	void Indirect(unsigned int stageNum, s32 s, s32 t); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	s32 Position[3]; | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	u8 Color[2][4]; // must be RGBA for correct swap table ordering
 | 
					
						
							|  |  |  | 	TextureCoordinateType Uv[8]; | 
					
						
							|  |  |  | 	s32 IndirectLod[4]; | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 	bool IndirectLinear[4]; | 
					
						
							|  |  |  | 	s32 TextureLod[16]; | 
					
						
							|  |  |  | 	bool TextureLinear[16]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-10 21:18:38 -04:00
										 |  |  | 	enum | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		ALP_C, | 
					
						
							|  |  |  | 		BLU_C, | 
					
						
							|  |  |  | 		GRN_C, | 
					
						
							|  |  |  | 		RED_C | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	void Init(); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	void Draw(); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	void SetRegColor(int reg, int comp, bool konst, s16 color); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-25 23:49:24 -05:00
										 |  |  | 	void DoState(PointerWrap &p); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | }; |