Пример #1
0
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();
}
Пример #2
0
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;
}