He says its basically a bug in the pspsdk. If you go further down he says that and how to fix it.
Raphel wrote:Regarding the look of the graphical glitch: it actually looks a lot like if the screen got rendered in 16bit mode, but displayed as 32bit (gonna try that out with a test image to verify). Hence there's also a very small possibility that it's either a bug in sceGu library or maybe even the hardware (though I'd rather not assume that).
For starters, could you try the following:
in JRenderer::StartScene() at the end, add the following line:
EDIT: A simple test has strengthened my assumption about the render format. I created a TGA file which was saved in 16bit (5551) at double height of the original image, filling the lower bottom with black (0).
Then i hex'ed the TGA file, so the header said it was actually 32bit (8888) at half height. The outcome is the same as the screenshots.
http://www.fx-world.org/images/test.tga (hex'ed image)
http://www.fx-world.org/images/test_orig.tga (unhex'ed image)
In case the line from above fixes the error, we can be sure that the problem is that the hardwares "render buffer format" (PSM) register is at some place overwritten with a value other than 3 (NOT the buffer format variable in the sceGu context, since that one is used every frame to set the display format through sceDisplaySetFrameBuf and obviously sets 32bit correctly).
How do we know that this is the fix and not one of Grandmas Recipies?
Well, grandma left town and her phone has been unplugged for weeks, but thats beside the point... The reason I believe the fix is adding that line is that...
In normal wagic (without the fix) If you reset the gu enough you can get purple, with this fix you cannot get purple, no matter how many times you try you can't get purple. I mean try normal wagic.... Hold down the GU reset button for a few second, youll get purple more than once. Try it with the change, you won't get purple even if you hold it down for eternity...