static void delayRead(int reg, u32 bpc) { u32 rold, rnew; // SysPrintf("delayRead at %x!\n", psxRegs.pc); rold = psxRegs.GPR.r[reg]; psxBSC[psxRegs.code >> 26](); // branch delay load rnew = psxRegs.GPR.r[reg]; psxRegs.pc = bpc; branch = 0; psxRegs.GPR.r[reg] = rold; execI(); // first branch opcode psxRegs.GPR.r[reg] = rnew; psxBranchTest(); }
static void delayRead(int reg, u32 bpc) { u32 rold, rnew; // SysPrintf("delayRead at %x!\n", psxRegs->pc); rold = psxRegs->GPR.r[reg]; psxBSC[psxRegs->code >> 26](); // branch delay load rnew = psxRegs->GPR.r[reg]; psxRegs->cycle += 1; //(int)((float)((psxRegs->pc-oldpc)/4) * BIAS_CYCLE_INC); psxRegs->pc = bpc; pc = oldpc = psxRegs->pc; psxRegs->GPR.r[reg] = rold; execI(); // first branch opcode psxRegs->GPR.r[reg] = rnew; psxBranchTest(); branch = 0; }