signed char t=get_reg(i_regs->regmap,rt1[i]);
char copr=(source[i]>>11)&0x1f;
//assert(t>=0); // Why does this happen? OOT is weird
- if(t>=0) {
+ if(t>=0&&rt1[i]!=0) {
#ifdef MUPEN64
emit_addimm(FP,(int)&fake_pc-(int)&dynarec_local,0);
emit_movimm((source[i]>>11)&0x1f,1);
signed char temp=get_reg(i_regs->regmap,-1);
if (opcode2[i]==0) { // MFC2
signed char tl=get_reg(i_regs->regmap,rt1[i]);
- if(tl>=0)
+ if(tl>=0&&rt1[i]!=0)
cop2_get_dreg(copr,tl,temp);
}
else if (opcode2[i]==4) { // MTC2
else if (opcode2[i]==2) // CFC2
{
signed char tl=get_reg(i_regs->regmap,rt1[i]);
- if(tl>=0)
+ if(tl>=0&&rt1[i]!=0)
emit_readword((int)®_cop2c[copr],tl);
}
else if (opcode2[i]==6) // CTC2