| 
									
										
										
										
											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"
 | 
					
						
							| 
									
										
										
										
											2014-11-27 23:53:11 +01:00
										 |  |  | #include "VideoCommon/DataReader.h"
 | 
					
						
							| 
									
										
										
										
											2014-10-21 02:01:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | #define GX_NOP                      0x00
 | 
					
						
							| 
									
										
										
										
											2015-03-13 23:25:15 +11:00
										 |  |  | #define GX_UNKNOWN_RESET            0x01
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define GX_LOAD_BP_REG              0x61
 | 
					
						
							|  |  |  | #define GX_LOAD_CP_REG              0x08
 | 
					
						
							|  |  |  | #define GX_LOAD_XF_REG              0x10
 | 
					
						
							|  |  |  | #define GX_LOAD_INDX_A              0x20
 | 
					
						
							|  |  |  | #define GX_LOAD_INDX_B              0x28
 | 
					
						
							|  |  |  | #define GX_LOAD_INDX_C              0x30
 | 
					
						
							|  |  |  | #define GX_LOAD_INDX_D              0x38
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define GX_CMD_CALL_DL              0x40
 | 
					
						
							| 
									
										
										
										
											2009-08-09 11:03:58 +00:00
										 |  |  | #define GX_CMD_UNKNOWN_METRICS      0x44
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | #define GX_CMD_INVL_VC              0x48
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define GX_PRIMITIVE_MASK           0x78
 | 
					
						
							|  |  |  | #define GX_PRIMITIVE_SHIFT          3
 | 
					
						
							|  |  |  | #define GX_VAT_MASK                 0x07
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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.
 | 
					
						
							| 
									
										
										
										
											2009-07-26 09:52:35 +00:00
										 |  |  | #define GX_DRAW_QUADS               0x0   // 0x80
 | 
					
						
							| 
									
										
										
										
											2014-05-08 16:53:18 -07:00
										 |  |  | #define GX_DRAW_QUADS_2             0x1   // 0x88
 | 
					
						
							| 
									
										
										
										
											2009-07-26 09:52:35 +00:00
										 |  |  | #define GX_DRAW_TRIANGLES           0x2   // 0x90
 | 
					
						
							|  |  |  | #define GX_DRAW_TRIANGLE_STRIP      0x3   // 0x98
 | 
					
						
							|  |  |  | #define GX_DRAW_TRIANGLE_FAN        0x4   // 0xA0
 | 
					
						
							|  |  |  | #define GX_DRAW_LINES               0x5   // 0xA8
 | 
					
						
							|  |  |  | #define GX_DRAW_LINE_STRIP          0x6   // 0xB0
 | 
					
						
							|  |  |  | #define GX_DRAW_POINTS              0x7   // 0xB8
 | 
					
						
							| 
									
										
										
										
											2011-03-27 02:55:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | extern bool g_bRecordFifoData; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 04:46:09 +00:00
										 |  |  | void OpcodeDecoder_Init(); | 
					
						
							|  |  |  | void OpcodeDecoder_Shutdown(); | 
					
						
							| 
									
										
										
										
											2014-11-27 23:53:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | template <bool is_preprocess = false> | 
					
						
							|  |  |  | u8* OpcodeDecoder_Run(DataReader src, u32* cycles, bool in_display_list); |