48 lines
987 B
C
48 lines
987 B
C
struct texture_stage_op
|
|
{
|
|
unsigned int carg1, carg2, carg0;
|
|
unsigned int aarg1, aarg2, aarg0;
|
|
unsigned int dst;
|
|
};
|
|
|
|
static const char *debug_register(unsigned int reg) {
|
|
switch(reg) {
|
|
case 0x8921: return "GL_REG_0_ATI";
|
|
case 0x8923: return "GL_REG_2_ATI";
|
|
case 0x0: return "GL_ZERO";
|
|
case 0x1: return "GL_ONE";
|
|
default: return "Unknown register\n";
|
|
}
|
|
}
|
|
|
|
static unsigned int find_tmpreg(struct texture_stage_op op[8]) {
|
|
int i;
|
|
int tex_used[8];
|
|
|
|
for(i = 0; i < 8; i++) {
|
|
if(op[i].carg1 == 0x00000002 ) {
|
|
tex_used[i] = 1;
|
|
}
|
|
}
|
|
|
|
for(i = 1; i < 6; i++) {
|
|
if(!tex_used[i]) {
|
|
return 0x8921 + i;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
extern f(const char*);
|
|
|
|
void g() {
|
|
struct texture_stage_op op[8];
|
|
unsigned int tmparg = find_tmpreg(op);
|
|
unsigned int dstreg;
|
|
|
|
if(tmparg == 0x0) return;
|
|
dstreg = tmparg;
|
|
f(debug_register(dstreg));
|
|
return;
|
|
}
|