+// cp0 is passed separately for lightrec to be less messy
+void psxException(u32 cause, enum R3000Abdt bdt, psxCP0Regs *cp0) {
+ u32 opcode = intFakeFetch(psxRegs.pc);
+
+ if (unlikely(!Config.HLE && (opcode >> 25) == 0x25)) {
+ // "hokuto no ken" / "Crash Bandicot 2" ...
+ // BIOS does not allow to return to GTE instructions
+ // (just skips it, supposedly because it's scheduled already)
+ // so we execute it here
+ psxCP2Regs *cp2 = (psxCP2Regs *)(cp0 + 1);
+ psxRegs.code = opcode;
+ psxCP2[opcode & 0x3f](cp2);
+ }
+