Confirm with hardware test that the high bit of the input form is ignored.

Thanks to Ornox for testing
This commit is contained in:
Ryan Houdek 2016-02-29 11:52:25 -06:00
parent e1d36f91fc
commit 92e9382e61
2 changed files with 3 additions and 4 deletions

View File

@ -227,9 +227,7 @@ static T GenerateVertexShader(API_TYPE api_type)
out.Write("coord = float4(tex%d.x, tex%d.y, 1.0, 1.0);\n", texinfo.sourcerow - XF_SRCTEX0_INROW, texinfo.sourcerow - XF_SRCTEX0_INROW);
break;
}
// An input form other than ABC1 or AB11 doesn't exist
// But the hardware has it as a two bit field
_assert_(texinfo.inputform == XF_TEXINPUT_ABC1 || texinfo.inputform == XF_TEXINPUT_AB11);
// Input form of AB11 sets z element to 1.0
uid_data->texMtxInfo[i].inputform = xfmem.texMtxInfo[i].inputform;
if (texinfo.inputform == XF_TEXINPUT_AB11)
out.Write("coord.z = 1.0;\n");

View File

@ -178,7 +178,8 @@ union TexMtxInfo
{
u32 unknown : 1;
u32 projection : 1; // XF_TEXPROJ_X
u32 inputform : 2; // XF_TEXINPUT_X
u32 inputform : 1; // XF_TEXINPUT_X
u32 unknown2 : 1;
u32 texgentype : 3; // XF_TEXGEN_X
u32 sourcerow : 5; // XF_SRCGEOM_X
u32 embosssourceshift : 3; // what generated texcoord to use