X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fpsxhle.c;h=175b86ab4d99e528f8fa18f9bb57cae3e5518425;hb=46fe949677745250de387994657de2004fe3b29b;hp=83362ecdf7ad91cbffac3a41598000f032a14c08;hpb=ef79bbde537d6b9c745a7d86cb9df1d04c35590d;p=pcsx_rearmed.git diff --git a/libpcsxcore/psxhle.c b/libpcsxcore/psxhle.c index 83362ecd..175b86ab 100644 --- a/libpcsxcore/psxhle.c +++ b/libpcsxcore/psxhle.c @@ -23,8 +23,17 @@ #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, };