| 
									
										
										
										
											2015-05-24 06:55:12 +02:00
										 |  |  | // Copyright 2008 Dolphin Emulator Project
 | 
					
						
							| 
									
										
										
										
											2015-05-18 01:08:10 +02:00
										 |  |  | // Licensed under GPLv2+
 | 
					
						
							| 
									
										
										
										
											2013-04-17 23:09:55 -04:00
										 |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-10 13:54:46 -05:00
										 |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-21 02:01:38 -04:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							| 
									
										
										
										
											2016-01-31 14:51:55 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | class DataReader; | 
					
						
							| 
									
										
										
										
											2014-10-21 02:01:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-07 23:11:04 -05:00
										 |  |  | namespace OpcodeDecoder | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | enum | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   GX_NOP = 0x00, | 
					
						
							|  |  |  |   GX_UNKNOWN_RESET = 0x01, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   GX_LOAD_BP_REG = 0x61, | 
					
						
							|  |  |  |   GX_LOAD_CP_REG = 0x08, | 
					
						
							|  |  |  |   GX_LOAD_XF_REG = 0x10, | 
					
						
							|  |  |  |   GX_LOAD_INDX_A = 0x20, | 
					
						
							|  |  |  |   GX_LOAD_INDX_B = 0x28, | 
					
						
							|  |  |  |   GX_LOAD_INDX_C = 0x30, | 
					
						
							|  |  |  |   GX_LOAD_INDX_D = 0x38, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   GX_CMD_CALL_DL = 0x40, | 
					
						
							|  |  |  |   GX_CMD_UNKNOWN_METRICS = 0x44, | 
					
						
							|  |  |  |   GX_CMD_INVL_VC = 0x48 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   GX_PRIMITIVE_MASK = 0x78, | 
					
						
							|  |  |  |   GX_PRIMITIVE_SHIFT = 3, | 
					
						
							|  |  |  |   GX_VAT_MASK = 0x07 | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-08 16:53:18 -07:00
										 |  |  | // These values are the values extracted using GX_PRIMITIVE_MASK
 | 
					
						
							|  |  |  | // and GX_PRIMITIVE_SHIFT.
 | 
					
						
							|  |  |  | // GX_DRAW_QUADS_2 behaves the same way as GX_DRAW_QUADS.
 | 
					
						
							| 
									
										
										
										
											2017-02-07 23:11:04 -05:00
										 |  |  | enum | 
					
						
							| 
									
										
										
										
											2016-01-24 01:29:44 -05:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-02-07 23:11:04 -05:00
										 |  |  |   GX_DRAW_QUADS = 0x0,           // 0x80
 | 
					
						
							|  |  |  |   GX_DRAW_QUADS_2 = 0x1,         // 0x88
 | 
					
						
							|  |  |  |   GX_DRAW_TRIANGLES = 0x2,       // 0x90
 | 
					
						
							|  |  |  |   GX_DRAW_TRIANGLE_STRIP = 0x3,  // 0x98
 | 
					
						
							|  |  |  |   GX_DRAW_TRIANGLE_FAN = 0x4,    // 0xA0
 | 
					
						
							|  |  |  |   GX_DRAW_LINES = 0x5,           // 0xA8
 | 
					
						
							|  |  |  |   GX_DRAW_LINE_STRIP = 0x6,      // 0xB0
 | 
					
						
							|  |  |  |   GX_DRAW_POINTS = 0x7           // 0xB8
 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-24 01:29:44 -05:00
										 |  |  | void Init(); | 
					
						
							| 
									
										
										
										
											2014-11-27 23:53:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | template <bool is_preprocess = false> | 
					
						
							| 
									
										
										
										
											2016-01-24 01:29:44 -05:00
										 |  |  | u8* Run(DataReader src, u32* cycles, bool in_display_list); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  | }  // namespace OpcodeDecoder
 |