05-07-2013, 05:46 PM
(05-07-2013, 05:21 PM)nosisab Ken Keleh Wrote: Besides what Rama said, this thread is about enhancing the game quality, overclocking EE is an attempt to get higher FPS, Billy. People proposing it are on the other side of the coin in the sense they believe their machine is powerful enough to do it.i understand , actually i like discuss something that enhance my knowledge
In resume it has nothing to do with increasing performance.
Still, to keep on the thread: "Warning, casual readers may want to skip the following at all without loss."
Code:I saw reported once that GoW uses an engine which seems to work more alike PC adapting PS2 FPS (not to be confused with it's RR that is always 60/50 depending on region) second demand, I can't confirm this, but that could be a game which possibly would make good use of EE overclocking.
For most games the "image" is already linked with the frame in the actual PS2. This could be understood as "image" in this case is PS2 actual FPS and the FPS is meant here as it's refresh rate (what is defined on hardware and does not change).
Since the emulator is a PC software it has no means to implement that refresh rate (and no need), what happens is the emulator was designed to work at a FPS that emulates that stable PS2 refresh rate base and then the emulator will impress the actual PS2 FPS as "image" into each frame of it's FPS.
So,
PS2 refresh rate emulated as PCSX2 FPS
PS2 FPS emulated as image to go into each PCSX2 frame.
This brings some interesting possibilities and some pitfalls.
First, since PCSX2 FPS is "free" it can change without the collateral effects which would be catastrophic case the RR is changed on actual PS2.
On the other hand, overclocking virtual EE increases the pace everything happens in the emulation and since the limiter will try and keep the FPS at nominal value is where the desyncs happens.
Rama's post gave me the impression that this issue is being addressed as could mean that the possibility to determine the emulated EE speed at GUI/ini level only (like an inverse of EE cyclerate hack).
The ideal scenery would be "convincing" the game to output higher FPS without changing the overall synchronization but that, if possible would be a per case basis what is secondary to emulation itself (actually would be changing the way PS2 works and not much of emulation anymore).
Of course this could be seen as akin to upscale which is already changing the way PS2 works, but whatever, it's nice!
On the other hand, since most of actual graphics are processed on the VUs, overclocking EE has an effect on VU as well, meaning EE could be serving data to VU at higher pace what is like VU hack tries when stealing cycles from EE to attend it when it needs a more steady flow.
That's a critical balance between several modules (it is so on PS2 also). The reason PCSX2 has complex mechanisms to keep the timings so to things don't go astray. Of course there are other modules EE has direct control also, like SPU, IOP and even the GS interface and in last instance GS itself.
From the emulation stand point the great problem is keeping that balance with the best possible performance, what is saying it's a compromise with accuracy and quality.
Currently the accuracy and quality are far from perfect. Games still have particularities which aren't correctly emulated yet, particularities PS2 has no problem dealing with. Analyzing what the game is trying to do and finding what is going wrong is what can increase accuracy not only for the particular game as for every other doing the same thing (I know it is easier to say than to do).
Conversely, I see the usage of patches as a necessity nowadays but I see it as "dangerous" also because can lead to an easy way to do wrong things and in last instance stall or make harder the real PCSX2 development on accuracy and overall quality.
Sadly enough, increase in performance at this stage claims for a complete PCSX2 structural remake and even so may not be enough performance gain to be worthy the trouble, PCSX2 already has amazing optimization mechanisms at it's lower emulation level.
Where I see the greatest performance gain could come is in pushing on the video card the job of dealing with the VUs... since the VUs are more part of GS than EE actually, if not for another reason because the sheer number of registers what any GPU has plenty.
Oddly enough this is something that will be done automatically at APU level when Kaveri comes out (or so is how I envision it). That's because Kaveri will not have float point registers in the CPU side at all and transfer to the GPU side all vector and float point processing.
Although this may mean an overall gain with general software it may mean a huge difference for PCSX2 since will be freeing the CPU to dedicate to EE and other modules and from having to deal with VUs also. Even the GS software mode would benefit from this. Although the GPU is inherently slower in raw clocks it is optimized for parallel work, just think how few are the CPU float point registers and how much they are used by the VUs emulation.
If PCSX2 does not go for it first, we may be watching AMD APUs getting a huge leap ahead Intel on the emulation.
Well, if you got to here I must commend your patience :)