mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-20 17:39:13 +00:00
Fixes for GameCube targeting
This commit is contained in:
@@ -260,6 +260,15 @@ GX::TraceResult GX::RecursiveTraceColor(const IR& ir, Diagnostics& diag, const I
|
||||
b->m_kColor = newKColor;
|
||||
return TraceResult(b);
|
||||
}
|
||||
else if (aTrace.type == TraceResult::Type::TEVColorArg &&
|
||||
bTrace.type == TraceResult::Type::TEVColorArg)
|
||||
{
|
||||
TEVStage& stage = addTEVStage(diag, inst.m_loc);
|
||||
stage.m_color[0] = aTrace.tevColorArg;
|
||||
stage.m_color[3] = bTrace.tevColorArg;
|
||||
stage.m_kColor = newKColor;
|
||||
return TraceResult(&stage);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ArithmeticOp::Subtract:
|
||||
@@ -292,6 +301,16 @@ GX::TraceResult GX::RecursiveTraceColor(const IR& ir, Diagnostics& diag, const I
|
||||
a->m_cop = TEV_SUB;
|
||||
return TraceResult(a);
|
||||
}
|
||||
else if (aTrace.type == TraceResult::Type::TEVColorArg &&
|
||||
bTrace.type == TraceResult::Type::TEVColorArg)
|
||||
{
|
||||
TEVStage& stage = addTEVStage(diag, inst.m_loc);
|
||||
stage.m_color[0] = aTrace.tevColorArg;
|
||||
stage.m_color[3] = bTrace.tevColorArg;
|
||||
stage.m_kColor = newKColor;
|
||||
stage.m_cop = TEV_SUB;
|
||||
return TraceResult(&stage);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ArithmeticOp::Multiply:
|
||||
@@ -544,6 +563,15 @@ GX::TraceResult GX::RecursiveTraceAlpha(const IR& ir, Diagnostics& diag, const I
|
||||
b->m_kAlpha = newKAlpha;
|
||||
return TraceResult(b);
|
||||
}
|
||||
else if (aTrace.type == TraceResult::Type::TEVAlphaArg &&
|
||||
bTrace.type == TraceResult::Type::TEVAlphaArg)
|
||||
{
|
||||
TEVStage& stage = addTEVStage(diag, inst.m_loc);
|
||||
stage.m_alpha[0] = aTrace.tevAlphaArg;
|
||||
stage.m_alpha[3] = bTrace.tevAlphaArg;
|
||||
stage.m_kAlpha = newKAlpha;
|
||||
return TraceResult(&stage);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ArithmeticOp::Subtract:
|
||||
@@ -583,6 +611,16 @@ GX::TraceResult GX::RecursiveTraceAlpha(const IR& ir, Diagnostics& diag, const I
|
||||
a->m_kAlpha = newKAlpha;
|
||||
return TraceResult(a);
|
||||
}
|
||||
else if (aTrace.type == TraceResult::Type::TEVAlphaArg &&
|
||||
bTrace.type == TraceResult::Type::TEVAlphaArg)
|
||||
{
|
||||
TEVStage& stage = addTEVStage(diag, inst.m_loc);
|
||||
stage.m_alpha[0] = aTrace.tevAlphaArg;
|
||||
stage.m_alpha[3] = bTrace.tevAlphaArg;
|
||||
stage.m_kAlpha = newKAlpha;
|
||||
stage.m_aop = TEV_SUB;
|
||||
return TraceResult(&stage);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ArithmeticOp::Multiply:
|
||||
|
||||
Reference in New Issue
Block a user