#include "psxhle.h"
+#if 0
+#define PSXHLE_LOG SysPrintf
+#else
+#define PSXHLE_LOG(...)
+#endif
+
static void hleDummy() {
+ log_unhandled("hleDummy called @%08x ra=%08x\n",
+ psxRegs.pc - 4, psxRegs.GPR.n.ra);
psxRegs.pc = psxRegs.GPR.n.ra;
+ psxRegs.cycle += 1000;
psxBranchTest();
}
}
static void hleBootstrap() { // 0xbfc00000
- SysPrintf("hleBootstrap\n");
+ PSXHLE_LOG("hleBootstrap\n");
CheckCdrom();
LoadCdrom();
- SysPrintf("CdromLabel: \"%s\": PC = %8.8lx (SP = %8.8lx)\n", CdromLabel, psxRegs.pc, psxRegs.GPR.n.sp);
+ PSXHLE_LOG("CdromLabel: \"%s\": PC = %8.8lx (SP = %8.8lx)\n", CdromLabel, psxRegs.pc, psxRegs.GPR.n.sp);
}
typedef struct {
static void hleExecRet() {
EXEC *header = (EXEC*)PSXM(psxRegs.GPR.n.s0);
- SysPrintf("ExecRet %x: %x\n", psxRegs.GPR.n.s0, header->ret);
+ PSXHLE_LOG("ExecRet %x: %x\n", psxRegs.GPR.n.s0, header->ret);
psxRegs.GPR.n.ra = header->ret;
psxRegs.GPR.n.sp = header->_sp;
psxRegs.pc = psxRegs.GPR.n.ra;
}
-void (* const psxHLEt[])() = {
+void (* const psxHLEt[22])() = {
hleDummy, hleA0, hleB0, hleC0,
- hleBootstrap, hleExecRet,
- hleDummy, hleDummy
+ hleBootstrap, hleExecRet, psxBiosException, hleDummy,
+ hleExc0_0_1, hleExc0_0_2,
+ hleExc0_1_1, hleExc0_1_2, hleExc0_2_2_syscall,
+ hleExc1_0_1, hleExc1_0_2,
+ hleExc1_1_1, hleExc1_1_2,
+ hleExc1_2_1, hleExc1_2_2,
+ hleExc1_3_1, hleExc1_3_2,
+ hleExc3_0_2_defint,
};