mirror of https://github.com/PCSX2/pcsx2.git
-Scaled back the EE load/store cycle count to the theoretical minimum of 1 cycle. (Fixes Digital Devil Saga PAL fmv)
-Added a safety to the VU cycle stealing hack, so it doesn't go berserk :p Note: Due to the changed cycle count a lot of games will get "slower". Especially FMV will be affected. This is unfortunate, but correct emulation comes first. You can however enable the ee sync speedhacks, as they're more stable now as well. This can bring back the lost speed. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@999 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
986683323e
commit
984ca67042
|
@ -108,11 +108,8 @@ namespace R5900
|
|||
|
||||
static const int FPU_Mult = 12;
|
||||
|
||||
static const int Store = 28;
|
||||
static const int Load = 22;
|
||||
|
||||
static const int StoreFast = 14;
|
||||
static const int LoadFast = 12;
|
||||
static const int Store = 8;
|
||||
static const int Load = 8;
|
||||
}
|
||||
|
||||
using namespace Cycles;
|
||||
|
@ -263,28 +260,28 @@ namespace R5900
|
|||
MakeOpcode( LB, Load );
|
||||
MakeOpcode( LH, Load );
|
||||
MakeOpcode( LWL, Load );
|
||||
MakeOpcode( LW, LoadFast );
|
||||
MakeOpcode( LW, Load );
|
||||
MakeOpcode( LBU, Load );
|
||||
MakeOpcode( LHU, Load );
|
||||
MakeOpcode( LWR, Load );
|
||||
MakeOpcode( LWU, Load );
|
||||
MakeOpcode( LWC1, Load );
|
||||
MakeOpcode( LQC2, Load );
|
||||
MakeOpcode( LD, LoadFast );
|
||||
MakeOpcode( LD, Load );
|
||||
|
||||
// Stores!
|
||||
|
||||
MakeOpcode( SQ, Store );
|
||||
MakeOpcode( SB, Store );//slow
|
||||
MakeOpcode( SH, Store );//slow
|
||||
MakeOpcode( SB, Store );
|
||||
MakeOpcode( SH, Store );
|
||||
MakeOpcode( SWL, Store );
|
||||
MakeOpcode( SW, StoreFast );
|
||||
MakeOpcode( SW, Store );
|
||||
MakeOpcode( SDL, Store );
|
||||
MakeOpcode( SDR, Store );
|
||||
MakeOpcode( SWR, Store );
|
||||
MakeOpcode( SWC1, Store );
|
||||
MakeOpcode( SQC2, Store );
|
||||
MakeOpcode( SD, StoreFast );
|
||||
MakeOpcode( SD, Store );
|
||||
|
||||
|
||||
// Multimedia Instructions!
|
||||
|
|
|
@ -2294,7 +2294,11 @@ void SuperVUCleanupProgram(u32 startpc, int vuindex)
|
|||
|
||||
VU = vuindex ? &VU1 : &VU0;
|
||||
VU->cycle += s_TotalVUCycles;
|
||||
cpuRegs.cycle += s_TotalVUCycles * Config.VUCycleHack;
|
||||
|
||||
//VU cycle stealing hack, 3000 cycle maximum so it doesn't get out of hand
|
||||
if (s_TotalVUCycles < 3000) cpuRegs.cycle += s_TotalVUCycles * Config.VUCycleHack;
|
||||
else cpuRegs.cycle += 3000 * Config.VUCycleHack;
|
||||
|
||||
if( (int)s_writeQ > 0 ) VU->VI[REG_Q] = VU->q;
|
||||
if( (int)s_writeP > 0 ) {
|
||||
assert(VU == &VU1);
|
||||
|
|
Loading…
Reference in New Issue