Posts: 109
Threads: 18
Joined: Oct 2009
Reputation:
0
Location: Behind you
Just wondering why some games run beautifully while other games tax the system heavily.
Is it a case of game code or something else?
Like, why does FFX tend to run fine, but a 2d game like Guilty Gear has been barely playable until recently?
What is it about certain games, particularly some that you wouldn't think would be so hard to run that are harder to run stable?
/curious
Posts: 521
Threads: 0
Joined: Sep 2009
Reputation:
0
Location: Sydney, Australia
I'm guessing that different games will use the PS2 engine in different ways. Some of these methods of emulation will not have been perfected yet in the emulator, so some games may still lag even on the best PC configurations. Also, even though games are created for a specific platform and a specific set of hardware configurations, there can still be variations in the amount of graphical power required etc. between games. The only guarantee is that all games will run on PS2s, but some can still be more taxing than others.
A more detailed and technical explanation will probably follow soon when one of the developers comes in...
Posts: 1.452
Threads: 64
Joined: Nov 2008
Reputation:
17
Location: Meshoppen, PA
There are four main taxing factors in games:
* Texture swizzling -- this happens when games upload new texture data to the PS2's GS (graphics synthesizer). The GS only had 4MB of ram, but a LOT of bandwidth, so games would frequently re-upload several megs of texture data per frame so that they could have more than 4MB worth of texture detail. On PCs this operation is very slow, because PCs are built with lots and lots of video ram and comparatively little memory bandwidth. This is the main reason Guilty Gear is slow.
* EE core and it's FPU unit being heavily worked -- this happens when games just do lots and lots of "work" in the EE, and use small tight loops to do it, which admittedly isn't too common. The CPUs in the PS2 are very fast at branching instructions, which are used to execute loops and such. Intel CPUs tend to be less efficient, and emulating a branch requires extra work on top of that. So such games will be "fast" in PS2 terms, but are much harder for PCSX2 to emulate. This is the main thing that makes Shadow of the Colossus slow.
* VU1 micro being used in clever ways -- this happens when a game decides to use the VU1 to its full potential, sometimes executing dozens of micro programs per frame. This puts stress of the VU1 program caches in PCSX2, and also means that much more work for PCSX2 to do. Most games leave the VU1 idle most of the time, or literally run the VU1 and EE in 'interlocked' fashion such that there isn't actually any parallel processing happening. God of War however does neither, and this is what makes it tend to run slow.
* Post processing effects on the EE/GS -- I'm not an expert on how post processing works, or why it's quite so slow, but suffice to say that games that use post processing tend to be very slow. GSdx intentionally disables many of the post-processing effects in games, since they're often used for frivolous effects like 'improving" the visual quality of shadows or other effects most of us hardly miss.
Jake Stine (Air) - Programmer - PCSX2 Dev Team
Posts: 1.452
Threads: 64
Joined: Nov 2008
Reputation:
17
Location: Meshoppen, PA
Yeah the secret was that the GS is integrated onto the same chip DIE as the EE and VUs. It's basically a 4-core chip, kinda like how a Core2Quad or Phenom x4 has 4 cores on a single die, except it also has an integrated DMA controller for extremely fast inter-core communication (so fast that only recently with PCI-E x16 did PCs have any chance of matching it). Actually, it's very similar to a 4-core version of the current CELL cpu used in PS3's and XBOX360's... so much so that it's really the pre-cursor to the CELL's design model.
Bottom line: the PS2 is able to upload data to the GS at a rate of 2.4gb/s. That's 45 megs per frame, and only a fraction of that needs to be used for geometry and other logistical overhead.
Jake Stine (Air) - Programmer - PCSX2 Dev Team