3 ms·
Oh man, the emotion that comes up for me from PS2 is "anger", since that's what the emotion engine produced in me. The PS2 had lots of really tricky quirks to
by oppositelock 4y ago
Oh man, the emotion that comes up for me from PS2 is "anger", since that's what the emotion engine produced in me.
The PS2 had lots of really tricky quirks to deal with. First, VU0 (IIRC, could be the other one) had really limited means of transferring data, and you'd have to stall the CPU to do it, making it very difficult to get any real use out of it. VU1's access to gfx was handy, though.
Next up, the framebuffer operations in the GS (Graphics Synthesizer) were limited to a single function with four terms. The most common blending function you'd want to use (src * src_alpha) + dst * (1 - src_alpha) was simply not possible. In real terms, this means you could not blend things into the framebuffer based on alpha transparency, so you had to do lots of tricks. Ever noticed how shadow casters in PS2 games were always casting pitch black shadows? It's because you could squash to black, but couldn't modulate existing color.
The "scratch pad" was effectively L2 cache that you controlled yourself, and it was critical to manage it properly to get any performance out of the cpu. This was quite tricky.
This era of console games was very interesting. The PS2 was frustrating, while the GameCube was a bit easier, but just as frustrating. Matrix math in the GameCube was limited to 4x3, not the normal 4x4. The last row was fixed to the unit W vector. This means you could not project - ever notice how shadows on GameCube games are little smooth ovals? It's because without the ability to project, you could not render a model as a shadow. Gamecube was also weird in that it had little main memory, but a whole lot of audio memory, so you'd write a paging engine which would use audio memory as general purpose, by swapping stuff in and out of it.
Then came the XBox. It had Visual Studio and you wrote code as you would for a PC. You could even debug in a debugger, not printouts! It was glorious.
- danbolt 4y ago> This means you could not project - ever notice how shadows on GameCube games are little smooth ovals? It's because without the ability to project, you could not render a model as a shadow. I remember Star Fox: Assault having shadows that match the character's motion. I've linked a clip below: https://youtu.be/Gy76FPWRBoo?t=435 https://youtu.be/Gy76FPWRBoo?t=435 I'm curious how Namco's developers might be performing it since matrices are 4x3 like you mention.
- oppositelock 4y agoI was over-simplifying. Where there's a will, there is a way. If you have a matrix that's got a 0 for the Z term in each column, you will squash the model onto the XY plane, as it is here. What you can not do with a last row being the unit W vector is shearing, perspective transformations, that sort of thing. Notice in that Star Fox game that the shadow isn't changing in size as the character jumps up and down relative to the light - also where is the light? It looks like shadows are cast by some virtual directional in the middle of the level. You could not do this for a point light. You can totally fake this by shearing the model sideways and squashing one coordinate to zero. You render it twice, once as a shadow, once the normal way. Sometimes, you even build a separate shadow model that's much simpler. There's a lot of special case trickery that goes on in games. I was thinking of the little round circles since it's really cheap to compute, but yes, you could do shadows in limited cases. What the 4th row being a unit W vector really prevents is projections. What Star Fox shows are non-projective shadows. Anyhow, this is some graphics nerdery here that is no longer relevant, and people faked it well enough.
- danbolt 4y agoThanks for taking the time to elaborate; it really helped me understand better and contextualize my childhood a little more!
- djmips 4y ago:) IDK - I thought it was fun figuring that stuff out. The modern consoles still have their challenges and the mysteries are still there if you want to get very low level.