* GTE;
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@87357 e17a0e51-4ae3-4d35-97c3-1a29b211df97
This commit is contained in:
parent
609b09af54
commit
0d1bc99a99
1746
libpcsxcore/gte.c
1746
libpcsxcore/gte.c
File diff suppressed because it is too large
Load Diff
|
@ -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
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue