Adapt to new GPU register write style
This commit is contained in:
parent
cd57cf8d3f
commit
009afa6ef5
@ -57,9 +57,8 @@ void C3D_SetAttrInfo(C3D_AttrInfo* info)
|
|||||||
|
|
||||||
void C3Di_AttrInfoBind(C3D_AttrInfo* info)
|
void C3Di_AttrInfoBind(C3D_AttrInfo* info)
|
||||||
{
|
{
|
||||||
GPUCMD_Add(0x800F0201, (u32*)&info->cfg, sizeof(C3D_AttrCfg)/sizeof(u32));
|
GPUCMD_AddIncrementalWrites(GPUREG_ATTRIBBUFFERS_FORMAT_LOW, (u32*)&info->cfg, sizeof(C3D_AttrCfg)/sizeof(u32));
|
||||||
GPUCMD_AddSingleParam(0x000B02B9, 0xA0000000 | (info->attrCount - 1));
|
GPUCMD_AddMaskedWrite(GPUREG_VSH_INPUTBUFFER_CONFIG, 0xB, 0xA0000000 | (info->attrCount - 1));
|
||||||
GPUCMD_AddSingleParam(0x000F0242, info->attrCount - 1);
|
GPUCMD_AddWrite(GPUREG_0242, info->attrCount - 1);
|
||||||
GPUCMD_AddSingleParam(0x000F02BB, info->permutation & 0xFFFFFFFF);
|
GPUCMD_AddIncrementalWrites(GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW, (u32*)&info->permutation, 2);
|
||||||
GPUCMD_AddSingleParam(0x000F02BC, info->permutation >> 32);
|
|
||||||
}
|
}
|
||||||
|
@ -25,22 +25,22 @@ static void C3Di_SetTex(GPU_TEXUNIT unit, C3D_Tex* tex)
|
|||||||
switch (unit)
|
switch (unit)
|
||||||
{
|
{
|
||||||
case GPU_TEXUNIT0:
|
case GPU_TEXUNIT0:
|
||||||
GPUCMD_AddSingleParam(0x000F008E, reg[0]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT0_TYPE, reg[0]);
|
||||||
GPUCMD_AddSingleParam(0x000F0085, reg[1]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT0_LOC, reg[1]);
|
||||||
GPUCMD_AddSingleParam(0x000F0082, reg[2]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT0_DIM, reg[2]);
|
||||||
GPUCMD_AddSingleParam(0x000F0083, reg[3]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT0_PARAM, reg[3]);
|
||||||
break;
|
break;
|
||||||
case GPU_TEXUNIT1:
|
case GPU_TEXUNIT1:
|
||||||
GPUCMD_AddSingleParam(0x000F0096, reg[0]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT1_TYPE, reg[0]);
|
||||||
GPUCMD_AddSingleParam(0x000F0095, reg[1]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT1_LOC, reg[1]);
|
||||||
GPUCMD_AddSingleParam(0x000F0092, reg[2]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT1_DIM, reg[2]);
|
||||||
GPUCMD_AddSingleParam(0x000F0093, reg[3]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT1_PARAM, reg[3]);
|
||||||
break;
|
break;
|
||||||
case GPU_TEXUNIT2:
|
case GPU_TEXUNIT2:
|
||||||
GPUCMD_AddSingleParam(0x000F009E, reg[0]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT2_TYPE, reg[0]);
|
||||||
GPUCMD_AddSingleParam(0x000F009D, reg[1]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT2_LOC, reg[1]);
|
||||||
GPUCMD_AddSingleParam(0x000F009A, reg[2]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT2_DIM, reg[2]);
|
||||||
GPUCMD_AddSingleParam(0x000F009B, reg[3]);
|
GPUCMD_AddWrite(GPUREG_TEXUNIT2_PARAM, reg[3]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,20 +6,20 @@ void C3D_DrawArray(C3D_VBO* vbo, GPU_Primitive_t primitive)
|
|||||||
C3Di_UpdateContext();
|
C3Di_UpdateContext();
|
||||||
|
|
||||||
// Set primitive type
|
// Set primitive type
|
||||||
GPUCMD_AddSingleParam(0x0002025E, primitive);
|
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 2, primitive);
|
||||||
GPUCMD_AddSingleParam(0x0002025F, 0x00000001);
|
GPUCMD_AddMaskedWrite(GPUREG_025F, 2, 0x00000001);
|
||||||
// The index buffer is not used, but 0x000F0227 is still required
|
// The index buffer is not used, but 0x000F0227 is still required
|
||||||
GPUCMD_AddSingleParam(0x000F0227, 0x80000000);
|
GPUCMD_AddWrite(GPUREG_INDEXBUFFER_CONFIG, 0x80000000);
|
||||||
// Number of vertices
|
// Number of vertices
|
||||||
GPUCMD_AddSingleParam(0x000F0228, vbo->vertexCount);
|
GPUCMD_AddWrite(GPUREG_NUMVERTICES, vbo->vertexCount);
|
||||||
|
|
||||||
// Unknown commands
|
// Unknown commands
|
||||||
GPUCMD_AddSingleParam(0x00010253, 0x00000001);
|
GPUCMD_AddMaskedWrite(GPUREG_0253, 1, 0x00000001);
|
||||||
|
|
||||||
GPUCMD_AddSingleParam(0x00010245, 0x00000000);
|
GPUCMD_AddMaskedWrite(GPUREG_0245, 1, 0x00000000);
|
||||||
GPUCMD_AddSingleParam(0x000F022E, 0x00000001);
|
GPUCMD_AddWrite(GPUREG_DRAWARRAYS, 0x00000001);
|
||||||
GPUCMD_AddSingleParam(0x00010245, 0x00000001);
|
GPUCMD_AddMaskedWrite(GPUREG_0245, 1, 0x00000001);
|
||||||
GPUCMD_AddSingleParam(0x000F0231, 0x00000001);
|
GPUCMD_AddWrite(GPUREG_0231, 0x00000001);
|
||||||
|
|
||||||
C3Di_GetContext()->flags |= C3DiF_NeedFinishDrawing;
|
C3Di_GetContext()->flags |= C3DiF_NeedFinishDrawing;
|
||||||
}
|
}
|
||||||
|
@ -5,21 +5,21 @@ void C3D_DrawElements(C3D_IBO* ibo, GPU_Primitive_t primitive)
|
|||||||
C3Di_UpdateContext();
|
C3Di_UpdateContext();
|
||||||
|
|
||||||
// Set primitive type
|
// Set primitive type
|
||||||
GPUCMD_AddSingleParam(0x0002025E, primitive);
|
GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 2, primitive);
|
||||||
GPUCMD_AddSingleParam(0x0002025F, 0x00000001);
|
GPUCMD_AddMaskedWrite(GPUREG_025F, 2, 0x00000001);
|
||||||
// Bind the IBO
|
// Bind the IBO
|
||||||
C3Di_IBOBind(ibo);
|
C3Di_IBOBind(ibo);
|
||||||
// Number of vertices
|
// Number of vertices
|
||||||
GPUCMD_AddSingleParam(0x000F0228, ibo->indexCount);
|
GPUCMD_AddWrite(GPUREG_NUMVERTICES, ibo->indexCount);
|
||||||
|
|
||||||
// Unknown commands
|
// Unknown commands
|
||||||
GPUCMD_AddSingleParam(0x00020229, 0x00000100);
|
GPUCMD_AddMaskedWrite(GPUREG_GEOSTAGE_CONFIG, 2, 0x00000100);
|
||||||
GPUCMD_AddSingleParam(0x00020253, 0x00000100);
|
GPUCMD_AddMaskedWrite(GPUREG_0253, 2, 0x00000100);
|
||||||
|
|
||||||
GPUCMD_AddSingleParam(0x00010245, 0x00000000);
|
GPUCMD_AddMaskedWrite(GPUREG_0245, 1, 0x00000000);
|
||||||
GPUCMD_AddSingleParam(0x000F022F, 0x00000001);
|
GPUCMD_AddWrite(GPUREG_DRAWELEMENTS, 0x00000001);
|
||||||
GPUCMD_AddSingleParam(0x00010245, 0x00000001);
|
GPUCMD_AddMaskedWrite(GPUREG_0245, 1, 0x00000001);
|
||||||
GPUCMD_AddSingleParam(0x000F0231, 0x00000001);
|
GPUCMD_AddWrite(GPUREG_0231, 0x00000001);
|
||||||
|
|
||||||
C3Di_GetContext()->flags |= C3DiF_NeedFinishDrawing;
|
C3Di_GetContext()->flags |= C3DiF_NeedFinishDrawing;
|
||||||
}
|
}
|
||||||
|
@ -58,15 +58,15 @@ void C3D_AlphaBlend(GPU_BLENDEQUATION colorEq, GPU_BLENDEQUATION alphaEq, GPU_BL
|
|||||||
|
|
||||||
void C3Di_EffectBind(C3D_Effect* e)
|
void C3Di_EffectBind(C3D_Effect* e)
|
||||||
{
|
{
|
||||||
GPUCMD_AddSingleParam(0x000F006D, 0x00000001);
|
GPUCMD_AddWrite(GPUREG_006D, 0x00000001);
|
||||||
GPUCMD_AddSingleParam(0x000F0040, e->cullMode & 0x3);
|
GPUCMD_AddWrite(GPUREG_FACECULLING_CONFIG, e->cullMode & 0x3);
|
||||||
GPUCMD_Add(0x800F004D, (u32*)&e->drNear, 2);
|
GPUCMD_AddIncrementalWrites(GPUREG_DEPTHRANGE_NEAR, (u32*)&e->drNear, 2);
|
||||||
GPUCMD_Add(0x800F0104, (u32*)&e->alphaTest, 4);
|
GPUCMD_AddIncrementalWrites(GPUREG_ALPHATEST_CONFIG, (u32*)&e->alphaTest, 4);
|
||||||
GPUCMD_AddSingleParam(0x000F0103, e->blendClr);
|
GPUCMD_AddWrite(GPUREG_BLEND_COLOR, e->blendClr);
|
||||||
GPUCMD_AddSingleParam(0x000F0101, e->alphaBlend);
|
GPUCMD_AddWrite(GPUREG_BLEND_CONFIG, e->alphaBlend);
|
||||||
GPUCMD_AddSingleParam(0x00020100, 0x00000100);
|
GPUCMD_AddMaskedWrite(GPUREG_COLOROUTPUT_CONFIG, 2, 0x00000100);
|
||||||
|
|
||||||
// Wat
|
// Wat
|
||||||
GPUCMD_AddSingleParam(0x00010062, 0);
|
GPUCMD_AddMaskedWrite(GPUREG_0062, 1, 0);
|
||||||
GPUCMD_AddSingleParam(0x000F0118, 0);
|
GPUCMD_AddWrite(GPUREG_0118, 0);
|
||||||
}
|
}
|
||||||
|
@ -39,5 +39,5 @@ void C3D_SetTexEnv(int id, C3D_TexEnv* env)
|
|||||||
void C3Di_TexEnvBind(int id, C3D_TexEnv* env)
|
void C3Di_TexEnvBind(int id, C3D_TexEnv* env)
|
||||||
{
|
{
|
||||||
if (id >= 4) id += 2;
|
if (id >= 4) id += 2;
|
||||||
GPUCMD_Add(0x800F00C0 + id*8, (u32*)env, sizeof(C3D_TexEnv)/sizeof(u32));
|
GPUCMD_AddIncrementalWrites(GPUREG_TEXENV0_CONFIG0 + id*8, (u32*)env, sizeof(C3D_TexEnv)/sizeof(u32));
|
||||||
}
|
}
|
||||||
|
@ -50,14 +50,14 @@ void C3D_UpdateUniforms(void)
|
|||||||
{
|
{
|
||||||
if (!C3D_IVUnifDirty[i]) continue;
|
if (!C3D_IVUnifDirty[i]) continue;
|
||||||
|
|
||||||
GPUCMD_AddSingleParam(0x000F02B1+i, C3D_IVUnif[i]);
|
GPUCMD_AddWrite(GPUREG_VSH_INTUNIFORM_I0+i, C3D_IVUnif[i]);
|
||||||
C3D_IVUnifDirty[i] = false;
|
C3D_IVUnifDirty[i] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update bool uniforms
|
// Update bool uniforms
|
||||||
if (C3D_BoolUnifsDirty)
|
if (C3D_BoolUnifsDirty)
|
||||||
{
|
{
|
||||||
GPUCMD_AddSingleParam(0x000F02B0, 0x7FFF0000 | (u32)C3D_BoolUnifs);
|
GPUCMD_AddWrite(GPUREG_VSH_BOOLUNIFORM, 0x7FFF0000 | (u32)C3D_BoolUnifs);
|
||||||
C3D_BoolUnifsDirty = false;
|
C3D_BoolUnifsDirty = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user