Fix forced_unit for unimplemented instructions

For SCT and SCB, the forced unit is always set to FORCE_NONE before
handling of the instruction. This makes the error for unimplemented
instructions' forced unit be incorrect. This fixes that.
This commit is contained in:
Raul Tambre 2016-04-02 19:18:25 +03:00
parent 3ee56627eb
commit a8e15ce18a
1 changed files with 3 additions and 1 deletions

View File

@ -616,6 +616,8 @@ std::string FragmentProgramDecompiler::Decompile()
case RSX_FP_OPCODE_KIL: SetDst("discard", false); break; case RSX_FP_OPCODE_KIL: SetDst("discard", false); break;
default: default:
int prev_force_unit = forced_unit;
if (forced_unit == FORCE_NONE) if (forced_unit == FORCE_NONE)
{ {
if (SIP()) break; if (SIP()) break;
@ -634,7 +636,7 @@ std::string FragmentProgramDecompiler::Decompile()
if (handle_scb(opcode)) break; if (handle_scb(opcode)) break;
} }
LOG_ERROR(RSX, "Unknown/illegal instruction: 0x%x (forced unit %d)", opcode, forced_unit); LOG_ERROR(RSX, "Unknown/illegal instruction: 0x%x (forced unit %d)", opcode, prev_force_unit);
break; break;
} }