Developer Blog Wed, 18 Jan 2017 07:46:39 +0200 Joomla! - Open Source Content Management en-gb (PCSX2 team) Alpha Testing in the GS world Today, we will discuss the alpha testing feature of the GS. The feature is very basic but awful to emulate. Yet again, GS capability is 10 miles ahead of current GPUs.

Let's first look at the graphics pipeline to understand what alpha testing is. The main purpose of the graphic rendering pipeline is to compute the color of a pixel. But the color isn't enough if you want to render a 3D scene. Standard renderers use a Z-buffer, also called a depth buffer. They are based on a pixel test (note: they ought to be called fragment tests). It is really easy; If the test fails (pixel is rendered behind the current one), you discard the color depth value. If the test passes (pixel is rendered above the current one), you update both, color and depth values.

]]> (Gregory) Developer Blog Sun, 25 Sep 2016 18:25:38 +0300
Channel Shuffle Effect  
I) Introduction

Dear PCSX2 users,

GSdx got various improvements recently, issues were fixed on games such as Metal Gear Solid 3, Gran Turismo 4, Tekken 5, Tales of Legendia and Urban Chaos. All of those games use a certain effect that I have nicknamed as the "Channel Shuffle Effect". All games use a variation of this effect but each time the effect proved to be memory expensive and it was very slow, even with the best computers. The effect is very interesting because it explains the rendering/GPU architecture evolution from a fixed unit to a processor. So I decided to take this opportunity to explain it the best I can.


]]> (Gregory) Developer Blog Wed, 03 Aug 2016 15:04:38 +0300
Explanation of impossible blend The goal of blending is to combine two colors. The general equation on a modern GPU is:



coefficient1 * color1 +/- coefficient2 * color2

Color1/Color 2 are either the source color or the destination color.
Coefficient1/Coefficient2 are either the alpha value (transparency) of source/source2/destination, 1 - alpha, or a constant. The GPU will clamp the coefficients to [0;1]

The general equation on the PS2 however is:



(Color1 - Color2) * Coefficient + Color3

Color1/Color2/Color3 are either the source or destination color or zero.

Coefficient is the alpha value (transparency) of the source or destination, or a constant.

]]> (Gregory) Developer Blog Mon, 08 Jun 2015 01:08:28 +0300
Explanation of why hacks are needed to fix upscaling related glitches First, let's explain aliasing and why people are so keen on removing it with anti-aliasing. Let's start with some math :)

In the real world, signals are often "continuous." If you take two points A and B and A is very close to B then F(A) is very close to F(B). But a screen is not continuous. If you take two pixels side by side, one can be white while the other is black.

]]> (Gregory) Developer Blog Mon, 08 Jun 2015 01:07:40 +0300
MMU mini-series part 2 of 4 Hello PCSX2 followers,

After a long delay, this is the second part of the MMU mini-presentation. In the previous chapter we saw that MMU allows giving a virtual address space to a process. Besides, I told you MMU controls the cache behavior (cacheable/uncached accelerated/uncached). First, let me quickly explain the different cache accesses. Then I will introduce the default memory mapping of the PS2.

]]> (Gregory) Developer Blog Mon, 02 Feb 2015 12:22:52 +0200
MMU mini-series Hello PCSX2 followers,

It's been a while since the last developer blog entry. I would like to resume this old tradition.

I will present you a mini series on the MMU (memory management unit) and virtual memory. Jake and ZeroFrog already wrote some posts relating to this topic:

This time, I will explain the goal of MMU and why it is mandatory for modern systems. The MMU is a cornerstone for stability and security. I will also explain why it could be costly for the performance on the native system.

On the next article, I will present you the PS2 address space and how the MMU is really used.

]]> (Gregory) Developer Blog Sun, 23 Nov 2014 15:03:13 +0200
Contribute to the PCSX2 Wiki After quite some time, I take the chance to write up this blog post about our wiki, in place of our wiki overlord and forum member ng!

Here it is:

Salutations the fair people of PCSX2 land! Did you know we have a wiki in our borders? Well, apparently we do! And for more than 5 years now this wiki is waiting for someone like y'all PCSX2 geeks to help it thrive and to be the beacon of hope for those new users who desperately seek help in the ocean of boundless Internet. But some of you didn't even suspect of its existence!

In all seriousness, 5 long years have passed for PCSX2 wiki and we could say they were mostly quiet years. We had our share of fun though, and went through many changes. For example just recently we've adopted test tables and any of you can add your own test case or in-game issue so that new users can solve their game related problems quickly and comfortably. The wiki enjoyed many good contributors during its years. These people are the ones who really built it, filled it with information and helped it to become what it is now. It's difficult to mention all of these people in this small article but to those who have contributed to the wiki over the years we have an enormous gratitude! The wiki is in your perpetual debt!

Although we have many informative game cards a huge number of lesser known games are left without any test cases, issues, images or additional info. So we appeal to all of you who has a small amount of free time and a tested (or completed) game on your hands (whether it already has some test cases or not), -- you're more than welcome to register at and add your contribution to the wiki. Besides test cases the wiki could use some updates in general articles and guides (they are quite outdated).

Last but not least, anyone with designer skills can try his hand in re-designing the main page which is pretty old and honestly was never a real looker. And generally to those who want to fill any info, complete pages, fix errors, re-phrase sentences and do stuff, your help is sincerely appreciated!

Post a Comment!

]]> (bositman) Developer Blog Sun, 16 Nov 2014 20:18:40 +0200