git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@87357 e17a0e51-4ae3-4d35-97c3-1a29b211df97
This commit is contained in:
SND\edgbla_cp 2013-10-06 16:51:35 +00:00
parent 609b09af54
commit 0d1bc99a99
7 changed files with 974 additions and 5034 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,5 @@
/***************************************************************************
* PCSX-Revolution - PlayStation Emulator for Nintendo Wii *
* Copyright (C) 2009-2010 PCSX-Revolution Dev Team *
* <http://code.google.com/p/pcsx-revolution/> *
* Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@ -37,14 +35,14 @@ void gteLWC2();
void gteSWC2();
void gteRTPS();
void gteOP();
void gteNCLIP();
void gteOP();
void gteDPCS();
void gteINTPL();
void gteMVMVA();
void gteNCDS();
void gteNCDT();
void gteCDP();
void gteNCDT();
void gteNCCS();
void gteCC();
void gteNCS();

File diff suppressed because it is too large Load Diff

View File

@ -36,42 +36,34 @@ static void rec##f() { \
/* branch = 2; */\
}
#define CP2_FUNCNC(f) \
void gte##f(); \
static void rec##f() { \
iFlushRegs(); \
CALLFunc ((u32)gte##f); \
/* branch = 2; */\
}
CP2_FUNC(MFC2);
CP2_FUNC(MTC2);
CP2_FUNC(CFC2);
CP2_FUNC(CTC2);
CP2_FUNC(LWC2);
CP2_FUNC(SWC2);
CP2_FUNCNC(RTPS);
CP2_FUNC(RTPS);
CP2_FUNC(OP);
CP2_FUNCNC(NCLIP);
CP2_FUNC(NCLIP);
CP2_FUNC(DPCS);
CP2_FUNC(INTPL);
CP2_FUNC(MVMVA);
CP2_FUNCNC(NCDS);
CP2_FUNCNC(NCDT);
CP2_FUNCNC(CDP);
CP2_FUNCNC(NCCS);
CP2_FUNCNC(CC);
CP2_FUNCNC(NCS);
CP2_FUNCNC(NCT);
CP2_FUNC(NCDS);
CP2_FUNC(NCDT);
CP2_FUNC(CDP);
CP2_FUNC(NCCS);
CP2_FUNC(CC);
CP2_FUNC(NCS);
CP2_FUNC(NCT);
CP2_FUNC(SQR);
CP2_FUNC(DCPL);
CP2_FUNCNC(DPCT);
CP2_FUNCNC(AVSZ3);
CP2_FUNCNC(AVSZ4);
CP2_FUNCNC(RTPT);
CP2_FUNC(DPCT);
CP2_FUNC(AVSZ3);
CP2_FUNC(AVSZ4);
CP2_FUNC(RTPT);
CP2_FUNC(GPF);
CP2_FUNC(GPL);
CP2_FUNCNC(NCCT);
CP2_FUNC(NCCT);
#ifdef __cplusplus
}

View File

@ -36,42 +36,34 @@ static void rec##f() { \
/* branch = 2; */\
}
#define CP2_FUNCNC(f) \
void gte##f(); \
static void rec##f() { \
iFlushRegs(); \
CALLFunc((uptr)gte##f); \
/* branch = 2; */\
}
CP2_FUNC(MFC2);
CP2_FUNC(MTC2);
CP2_FUNC(CFC2);
CP2_FUNC(CTC2);
CP2_FUNC(LWC2);
CP2_FUNC(SWC2);
CP2_FUNCNC(RTPS);
CP2_FUNC(RTPS);
CP2_FUNC(OP);
CP2_FUNCNC(NCLIP);
CP2_FUNC(NCLIP);
CP2_FUNC(DPCS);
CP2_FUNC(INTPL);
CP2_FUNC(MVMVA);
CP2_FUNCNC(NCDS);
CP2_FUNCNC(NCDT);
CP2_FUNCNC(CDP);
CP2_FUNCNC(NCCS);
CP2_FUNCNC(CC);
CP2_FUNCNC(NCS);
CP2_FUNCNC(NCT);
CP2_FUNC(NCDS);
CP2_FUNC(NCDT);
CP2_FUNC(CDP);
CP2_FUNC(NCCS);
CP2_FUNC(CC);
CP2_FUNC(NCS);
CP2_FUNC(NCT);
CP2_FUNC(SQR);
CP2_FUNC(DCPL);
CP2_FUNCNC(DPCT);
CP2_FUNCNC(AVSZ3);
CP2_FUNCNC(AVSZ4);
CP2_FUNCNC(RTPT);
CP2_FUNC(DPCT);
CP2_FUNC(AVSZ3);
CP2_FUNC(AVSZ4);
CP2_FUNC(RTPT);
CP2_FUNC(GPF);
CP2_FUNC(GPL);
CP2_FUNCNC(NCCT);
CP2_FUNC(NCCT);
#ifdef __cplusplus
}

View File

@ -46,44 +46,34 @@ static void rec##f() { \
cop2readypc = pc + psxCP2time[_fFunct_(psxRegs.code)]<<2; \
}
#define CP2_FUNCNC(f) \
void gte##f(); \
static void rec##f() { \
if (pc < cop2readypc) idlecyclecount += (cop2readypc - pc)>>2; \
iFlushRegs(0); \
CALLFunc ((u32)gte##f); \
/* branch = 2; */\
cop2readypc = pc + psxCP2time[_fFunct_(psxRegs.code)]; \
}
CP2_FUNC(MFC2);
CP2_FUNC(MTC2);
CP2_FUNC(CFC2);
CP2_FUNC(CTC2);
CP2_FUNC(LWC2);
CP2_FUNC(SWC2);
CP2_FUNCNC(RTPS);
CP2_FUNC(RTPS);
CP2_FUNC(OP);
CP2_FUNCNC(NCLIP);
CP2_FUNC(NCLIP);
CP2_FUNC(DPCS);
CP2_FUNC(INTPL);
CP2_FUNC(MVMVA);
CP2_FUNCNC(NCDS);
CP2_FUNCNC(NCDT);
CP2_FUNCNC(CDP);
CP2_FUNCNC(NCCS);
CP2_FUNCNC(CC);
CP2_FUNCNC(NCS);
CP2_FUNCNC(NCT);
CP2_FUNC(NCDS);
CP2_FUNC(NCDT);
CP2_FUNC(CDP);
CP2_FUNC(NCCS);
CP2_FUNC(CC);
CP2_FUNC(NCS);
CP2_FUNC(NCT);
CP2_FUNC(SQR);
CP2_FUNC(DCPL);
CP2_FUNCNC(DPCT);
CP2_FUNCNC(AVSZ3);
CP2_FUNCNC(AVSZ4);
CP2_FUNCNC(RTPT);
CP2_FUNC(DPCT);
CP2_FUNC(AVSZ3);
CP2_FUNC(AVSZ4);
CP2_FUNC(RTPT);
CP2_FUNC(GPF);
CP2_FUNC(GPL);
CP2_FUNCNC(NCCT);
CP2_FUNC(NCCT);
#ifdef __cplusplus
}

View File

@ -57,6 +57,8 @@ typedef union {
struct { s8 l, h, h2, h3; } sb;
struct { s16 l, h; } sw;
#endif
u32 d;
s32 sd;
} PAIR;
typedef union {
@ -252,6 +254,15 @@ static inline u32 *Read_ICache(u32 pc, boolean isolate) {
return (u32 *)PSXM(pc);
}
// U64 and S64 are used to wrap long integer constants.
#ifdef __GNUC__
#define U64(val) val##ULL
#define S64(val) val##LL
#else
#define U64(val) val
#define S64(val) val
#endif
#if defined(__BIGENDIAN__)
#define _i32(x) *(s32 *)&x