Fix BRI instruction, fixes #1165

This commit is contained in:
Raul Tambre 2015-09-06 15:49:02 +03:00 committed by Nekotekina
parent de97c8e20f
commit 4666f190db

View file

@ -574,39 +574,36 @@ std::string VertexProgramDecompiler::Decompile()
AddCode("}"); AddCode("}");
} }
break; break;
/* This triggers opengl driver lost connection error code 7
case RSX_SCA_OPCODE_BRI: // works differently (BRI o[1].x(TR) L0;) case RSX_SCA_OPCODE_BRI: // works differently (BRI o[1].x(TR) L0;)
{ {
uint jump_position; u32 jump_position = 1;
if (is_has_BRA) if (is_has_BRA)
{ {
jump_position = GetAddr(); jump_position = GetAddr();
} }
else else
{ {
int addr = GetAddr(); u32 addr = GetAddr();
jump_position = 0; for (auto pos : m_jump_lvls)
for (auto pos : m_jump_lvls) {
{ if (addr == pos)
if (addr == pos) break;
break;
++jump_position; ++jump_position;
} }
} }
AddCode("$ifcond "); AddCode("$ifcond ");
AddCode("{"); AddCode("{");
m_cur_instr->open_scopes++; m_cur_instr->open_scopes++;
AddCode(fmt::format("jump_position = %u;", jump_position)); AddCode(fmt::format("jump_position = %u;", jump_position));
AddCode("continue;"); AddCode("continue;");
m_cur_instr->close_scopes++; m_cur_instr->close_scopes++;
AddCode("}"); AddCode("}");
} }
break; break;
*/
case RSX_SCA_OPCODE_CAL: case RSX_SCA_OPCODE_CAL:
// works same as BRI // works same as BRI
AddCode("$ifcond $f(); //CAL"); AddCode("$ifcond $f(); //CAL");