SHDR : fixed DVLE_SendOutmap

This commit is contained in:
smea 2014-03-20 23:30:11 +01:00
parent 04c2c2760a
commit 883cc76df8

View File

@ -121,11 +121,15 @@ void DVLE_SendOutmap(DVLE_s* dvle)
int i; int i;
u8 numAttr=0; u8 numAttr=0;
u8 maxAttr=0;
u8 attrMask=0;
//TODO : should probably preprocess this //TODO : should probably preprocess this
for(i=0;i<dvle->outTableSize;i++) for(i=0;i<dvle->outTableSize;i++)
{ {
u32* out=&param[dvle->outTableData[i].regID]; u32* out=&param[dvle->outTableData[i].regID];
if(*out==0x1F1F1F1F)numAttr++;
//desc could include masking/swizzling info not currently taken into account //desc could include masking/swizzling info not currently taken into account
//also TODO : map out other output register values //also TODO : map out other output register values
switch(dvle->outTableData[i].type) switch(dvle->outTableData[i].type)
@ -137,10 +141,15 @@ void DVLE_SendOutmap(DVLE_s* dvle)
case RESULT_TEXCOORD2: *out=0x1F1F1716; break; case RESULT_TEXCOORD2: *out=0x1F1F1716; break;
} }
if(dvle->outTableData[i].regID+1>numAttr)numAttr=dvle->outTableData[i].regID+1; attrMask|=1<<dvle->outTableData[i].regID;
if(dvle->outTableData[i].regID+1>maxAttr)maxAttr=dvle->outTableData[i].regID+1;
} }
GPUCMD_AddSingleParam(0x000F004F, numAttr); GPUCMD_AddSingleParam(0x000F0251, numAttr-1); //?
GPUCMD_AddSingleParam(0x000F024A, numAttr-1); //?
GPUCMD_AddSingleParam(0x000F02BD, attrMask); //?
GPUCMD_AddSingleParam(0x0001025E, numAttr-1); //?
GPUCMD_AddSingleParam(0x000F004F, numAttr); //?
GPUCMD_Add(0x800F0050, param, 0x00000007); GPUCMD_Add(0x800F0050, param, 0x00000007);
} }