1 struct texture_stage_op 2 { 3 unsigned int carg1, carg2, carg0; 4 unsigned int aarg1, aarg2, aarg0; 5 unsigned int dst; 6 }; 7 debug_register(unsigned int reg)8static const char *debug_register(unsigned int reg) { 9 switch(reg) { 10 case 0x8921: return "GL_REG_0_ATI"; 11 case 0x8923: return "GL_REG_2_ATI"; 12 case 0x0: return "GL_ZERO"; 13 case 0x1: return "GL_ONE"; 14 default: return "Unknown register\n"; 15 } 16 } 17 find_tmpreg(struct texture_stage_op op[8])18static unsigned int find_tmpreg(struct texture_stage_op op[8]) { 19 int i; 20 int tex_used[8]; 21 22 for(i = 0; i < 8; i++) { 23 if(op[i].carg1 == 0x00000002 ) { 24 tex_used[i] = 1; 25 } 26 } 27 28 for(i = 1; i < 6; i++) { 29 if(!tex_used[i]) { 30 return 0x8921 + i; 31 } 32 } 33 return 0; 34 } 35 36 extern f(const char*); 37 g()38void g() { 39 struct texture_stage_op op[8]; 40 unsigned int tmparg = find_tmpreg(op); 41 unsigned int dstreg; 42 43 if(tmparg == 0x0) return; 44 dstreg = tmparg; 45 f(debug_register(dstreg)); 46 return; 47 } 48