]> Chaos Git - corbenik/ctrulib.git/commitdiff
SHDR : fixed DVLE_SendOutmap
authorsmea <smealum@gmail.com>
Thu, 20 Mar 2014 22:30:11 +0000 (23:30 +0100)
committersmea <smealum@gmail.com>
Thu, 20 Mar 2014 22:30:11 +0000 (23:30 +0100)
libctru/source/SHDR.c

index 2ea940faeb653c62c311141bb041cb0437794b9b..a1b241bef0ad1a593cc324a427018e1e3bdff3f5 100644 (file)
@@ -121,10 +121,14 @@ void DVLE_SendOutmap(DVLE_s* dvle)
 
        int i;
        u8 numAttr=0;
+       u8 maxAttr=0;
+       u8 attrMask=0;
        //TODO : should probably preprocess this
        for(i=0;i<dvle->outTableSize;i++)
        {
                u32* out=&param[dvle->outTableData[i].regID];
+               
+               if(*out==0x1F1F1F1F)numAttr++;
 
                //desc could include masking/swizzling info not currently taken into account
                //also TODO : map out other output register values
@@ -137,10 +141,15 @@ void DVLE_SendOutmap(DVLE_s* dvle)
                        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);
 }