EE Interpreter is (mostly) fixed now.

git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@362 a6443dda-0b58-4228-96e9-037be469359c
This commit is contained in:
Jake.Stine 2008-11-25 15:12:42 +00:00 committed by Gregory Hainaut
parent af7949f4ad
commit dcd3eaca10
2 changed files with 30 additions and 43 deletions

View File

@ -90,7 +90,7 @@ static u32 branchPC;
#define debugI()
#endif
void execI() {
static __forceinline void execI() {
cpuRegs.cycle++;
//cpuRegs.CP0.n.Count++; /*count every cycles.*/
@ -102,15 +102,11 @@ void execI() {
cpuRegs.code = *(u32 *)PSM(cpuRegs.pc);
#endif
cpuRegs.pc+= 4;
// if((cpuRegs.PERF.n.pccr & 0x80000020) == 0x80000020) cpuRegs.PERF.n.pcr0++;
// if((cpuRegs.PERF.n.pccr & 0x80008000) == 0x80008000) cpuRegs.PERF.n.pcr1++;
Int_OpcodePrintTable[cpuRegs.code >> 26]();
}
__inline void doBranch(u32 tar) {
static void doBranch(u32 tar) {
branch2 = cpuRegs.branch = 1;
branchPC = tar;
execI();

View File

@ -27,41 +27,7 @@ static int branch = 0;
static int branch2 = 0;
static u32 branchPC;
// These macros are used to assemble the repassembler functions
#ifdef _DEBUG
#define execI() { \
psxRegs.code = PSXMu32(psxRegs.pc); \
\
if (Log) { \
PSXCPU_LOG("%s\n", disR3000AF(psxRegs.code, psxRegs.pc)); \
} \
psxRegs.pc+= 4; \
psxRegs.cycle++; \
\
psxBSC[psxRegs.code >> 26](); \
}
#else
#define execI() { \
psxRegs.code = PSXMu32(psxRegs.pc); \
\
psxRegs.pc+= 4; \
psxRegs.cycle++; \
\
psxBSC[psxRegs.code >> 26](); \
}
#endif
#define doBranch(tar) { \
branch2 = branch = 1; \
branchPC = tar; \
execI(); \
branch = 0; \
psxRegs.pc = branchPC; \
\
psxBranchTest(); \
}
static void doBranch(tar); // forward declared prototype
// Subsets
extern void (*psxBSC[64])();
@ -755,6 +721,31 @@ void (*psxCP2BSC[32])() = {
///////////////////////////////////////////
// These macros are used to assemble the repassembler functions
static __forceinline void execI() {
psxRegs.code = PSXMu32(psxRegs.pc);
PSXCPU_LOG("%s\n", disR3000AF(psxRegs.code, psxRegs.pc));
psxRegs.pc+= 4;
psxRegs.cycle++;
psxCycleEE-=8;
psxBSC[psxRegs.code >> 26]();
}
static void doBranch(tar) {
branch2 = branch = 1;
branchPC = tar;
execI();
branch = 0;
psxRegs.pc = branchPC;
psxBranchTest();
}
static int intInit() {
return 0;
}
@ -775,7 +766,7 @@ static void intExecuteBlock() {
psxBreak = 0;
psxCycleEE = EEsCycle;
while (psxCycleEE >= 0){
while (psxCycleEE > 0){
branch2 = 0;
while (!branch2) {
execI();