switch over to libretro input code
[pcsx_rearmed.git] / libpcsxcore / psxhle.c
index 83362ec..175b86a 100644 (file)
 
 #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();
 }
@@ -54,10 +63,10 @@ static void hleC0() {
 }
 
 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 {                   
@@ -77,20 +86,27 @@ 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.GPR.n.s8 = header->_fp;
-       psxRegs.GPR.n.gp = header->_gp;
-       psxRegs.GPR.n.s0 = header->base;
+       psxRegs.GPR.n.ra = SWAP32(header->ret);
+       psxRegs.GPR.n.sp = SWAP32(header->_sp);
+       psxRegs.GPR.n.fp = SWAP32(header->_fp);
+       psxRegs.GPR.n.gp = SWAP32(header->_gp);
+       psxRegs.GPR.n.s0 = SWAP32(header->base);
 
        psxRegs.GPR.n.v0 = 1;
        psxRegs.pc = psxRegs.GPR.n.ra;
 }
 
-void (*psxHLEt[256])() = {
+void (* const psxHLEt[24])() = {
        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,
+       hleExcPadCard1, hleExcPadCard2,
 };