X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fpsxhle.c;h=175b86ab4d99e528f8fa18f9bb57cae3e5518425;hb=03b78a3bf48813202e01149ae0b3c5c1f01efb4c;hp=d575cb7282414fa09cb70eb344b942ef0a73014a;hpb=423b0da8be20ec189818f0014a108df31ab7bcdb;p=pcsx_rearmed.git diff --git a/libpcsxcore/psxhle.c b/libpcsxcore/psxhle.c index d575cb72..175b86ab 100644 --- a/libpcsxcore/psxhle.c +++ b/libpcsxcore/psxhle.c @@ -30,7 +30,10 @@ #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(); } @@ -85,18 +88,25 @@ static void hleExecRet() { 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; } -const void (*psxHLEt[8])() = { +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, };