| 
									
										
										
										
											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 "Common/CommonTypes.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
										 |  |  | namespace OpcodeDecoder | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	#define GX_NOP                      0x00
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04: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
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	#define GX_CMD_CALL_DL              0x40
 | 
					
						
							|  |  |  | 	#define GX_CMD_INVL_VC              0x48
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-08 15:43:41 -07:00
										 |  |  | 	#define GX_PRIMITIVE_MASK           0x38
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	#define GX_PRIMITIVE_SHIFT          3
 | 
					
						
							|  |  |  | 	#define GX_VAT_MASK                 0x07
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +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.
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	#define GX_DRAW_QUADS               0x0   //0x80
 | 
					
						
							| 
									
										
										
										
											2014-05-08 16:53:18 -07:00
										 |  |  | 	#define GX_DRAW_QUADS_2             0x1   //0x88
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04: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
 | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 ResetDecoding(); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	bool CommandRunnable(u32 iBufferSize); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-13 23:54:02 -04:00
										 |  |  | 	void Run(u32 iBufferSize); | 
					
						
							| 
									
										
										
										
											2013-02-25 20:05:02 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void DoState(PointerWrap &p); | 
					
						
							| 
									
										
										
										
											2010-06-09 01:37:08 +00:00
										 |  |  | } |