Console Emulators: Our Newest Benchmarkby Derek Wilson on March 3, 2004 11:33 PM EST
- Posted in
PlayStation GraphicsThere are quite a few aspects to emulating PlayStation graphics, some handled by the PSX emulator and some handled by the graphics plugin. First and foremost, an emulator must take care of all the tasks a normal PlayStation would need to handle. This includes playing movies (emulating the motion decoder: MDEC), handling 2D sprites, rendering 3D scenes and textures, and emulating effects originally produced via a combination of the PSX CPU and GPU (this can result in sometimes expensive uploads to the framebuffer (GPU memory containing the next frame to be displayed) from the CPU when emulating the PSX on a PC). These framebuffer intensive operations show up a lot in the Final Fantasy series of games (e.g. the pre-battle swirl effect, and certain in battle effects).
On top of the necessary tasks, it is very desirable to enhance the graphics as much as possible. Because the PlayStation targets television (essentially a 640x480 screen) and texture resolutions are generally low, highly pixilated images can result when playing games on a high resolution computer monitor. Graphics plugins are able to upsample, stretch, filter, and otherwise manipulate textures in order to make images a little more palatable. Beyond texture filtering, full screen filtering can also be implemented in order to assist in making the emulation experience just that much nicer. Standard emulator filters, such as TV scanlines, can be added, and fullscreen blur effects help assuage the lack of antialiasing. One of the coolest trends is the emerging use of pixel shaders to perform these filtering effects (and other parts of the graphics process as well), but more on that later.
Every game is different, and every game will stress different parts of the system in different ways. In order to get the most out of your library, it will be necessary to play with the settings for each game individually and/or use a front end to save your configuration data for each game.
As a final note on console game system graphics, it is important to understand that vsync is a way of life. Since consoles are built for TVs and TVs have fixed refresh rates; every console game out there makes use of the refresh rate as a system timer. It would be wasteful of precious resources to program otherwise. Of course, this adds an interesting dimension to emulation. Running your emulated game at anything other than 59.94 frames per second (in the National Television System Committee (NTSC) parts of the world) will result in your game running either faster or slower than it was intended. Though more of a side effect than a feature, sometimes this is desireable (memory card load/store times are much faster when the frame rate is higher, and for those without the necessary reflexes, slowing the game down can prove useful).
So, how does all this fit together for our PlayStation emulation project? For that, we need only to turn to Pete.