Questions about PS2

Looked into DT Racer. There's some actually nice graphics there despite being a ****** game. If there's something alot more PS2 games need, it was more extensive dynamic shadows.

Yeah, it looks pretty nice, and iirc until recently it was very broken in pcsx2. :p
 
Yeah, it looks pretty nice, and iirc until recently it was very broken in pcsx2. :p

I've been looking at Grand Prix Challenge as well. To see a game with it's detail, number of cars, and even rain and water effects at 60 FPS is absurdly impressive on the PS2.
 
As I know in DRAM 1 bit of memory is 1 transistor, that means what for PS2 32 MB RDRAM that is 268435456 transistors. In first PS2 models there was two RDRAM chips and that means each contained 134217728 transistors. But in last slim models and in superslim models there's no RDRAM chips at all. You can see in link below.
https://upload.wikimedia.org/wikipedia/commons/f/f6/Scph79001_mb.jpg

On this page is information what CPU, GPU, RDRAM and DRAM is in one chip. This chip is 65nm. But is that possible? That chip should be around 320 million transistors.
https://wikivisually.com/wiki/PlayStation_2_technical_specifications
 
Logically it has to be somewhere, because PS2 won't function without it. :p If that means the RAM is integrated onto the EE+GS, or organized separately as a MCM or PoP style sandwich is for wiser, more informed people than me to say. :D
 
Question about multipass rendering. Example. If there is street, road and all buildings require 1 pass and character made with 2 passes, how they will be made. First pass for all street geometry and character first pass and then second pass for character, or first pass for street, second for character and third for character?
 
If you can do it in two passes, you would. So in that scene, all the geometry would be drawn in pass one, then the reflections drawn onto the windows in pass two.
 
So in that scene, all the geometry would be drawn in pass one, then the reflections drawn onto the windows in pass two.
But reflections is also drawn with geometry? And also if answer for first question is yes, then does it mean what for pass two there will be drawn only geometry for windows or all geometry?
 
But reflections is also drawn with geometry? And also if answer for first question is yes, then does it mean what for pass two there will be drawn only geometry for windows or all geometry?
You mean planar reflections of the scene?

If the scene is simple there many games actually had inverted scene behind the reflecting surface with slightly altered colors.
Then reflecting surface is rendered as trasparent on top.

If this is not possible, you do it like 'modern' planar reflection.
Render scene to texture and when wildows need reflection, render them with transparency and reflection texture.

If windows are part of texture you render into destination alpha beforehand with locations of windows. (Reflection strenght texture.)
When rendering windows you could use destination alpha as transparency strenght, thus only windows get reflections.

Destination alpha was used quite bit on ps2.
 
I've been reading the past ten pages or so of this thread, and I've got to say I've learned quite a bit. It makes me want to go find a used PS2 and pick up so many of the games I played in my high school years, along with others I've never tried.

Also, I still wonder if Ace Combat 5 and Zero are using normal mapping on the planes. The very smooth lighting across the rounded surfaces makes me think so. They are using self shadows, used even in 2001's Ace Combat 4.
 
Last edited:
Can anyone tell difference between VIF0, VIF1, GIF and other data interfaces in other systems? I mean were they somehow different and/or had some features what not used in other interfaces in other systems?
 
Have some more questions. Example, in game there is 10 storey building with 5 windows on each storey. Each wall made from two very big polygons. So, let's take one wall.
1) Can these two big polygons textured with one texture?
2) If there is texture with one window and a wall around it, and on wall should be 50 windows. Can this little texture being put on those two polygons 50 times, or on one polygon can be only one texture, and wall need to be made from a lot more polygons.
 
Have some more questions. Example, in game there is 10 storey building with 5 windows on each storey. Each wall made from two very big polygons. So, let's take one wall.
1) Can these two big polygons textured with one texture?
2) If there is texture with one window and a wall around it, and on wall should be 50 windows. Can this little texture being put on those two polygons 50 times, or on one polygon can be only one texture, and wall need to be made from a lot more polygons.
Yes, GS supports basic rules for repeated/tiled textures. (example in OpenGL.)
 
Question about multipass rendering. Example. If there is street, road and all buildings require 1 pass and character made with 2 passes, how they will be made. First pass for all street geometry and character first pass and then second pass for character, or first pass for street, second for character and third for character?

You can do it that way. But, a smarter way would be to take advantage of the fact that the GS can change textures and blend modes in a few cycles. PC GPUs are traditionally much slower at this. Thus, they did whole-object passes. The VU1 has limited memory, but you can do whatever you want with it. So, upload maybe 64 polys worth of untransformed verts. Transform maybe 16 polys in a batch. Send all 16 to the GS for the first pass. Tell the GS to switch textures and blend mode. Send the same, already transformed 16 polys to the GS again. Switch the GS back to the texture/mode of the first pass. Transform 16 more polys. Send them to the GS. And, so on. That way you only transform each poly once.

Can anyone tell difference between VIF0, VIF1, GIF and other data interfaces in other systems? I mean were they somehow different and/or had some features what not used in other interfaces in other systems?

The VIF0 and VIF1 DMA data from main memory into VU0/1 memory. The GIF DMAs data into GS registers. Most other systems had little if any explicit DMA. DMA is basically about copying data around without the CPU or VU doing work. You set up a DMA, go do some other stuff and later the data is copied for you in the background.

The PS3 used DMA to get data in and out of the SPUs. Ideally you wanted an incoming DMA to buffer0 while the SPU was working on buffer1 and while there's a simultaneous DMA out of buffer2 all happening in parallel. That way ALU work never stops to wait for boring load/store ops.

PCs have DMA over the PCI bus. That's the memory controller copying data without the CPU. But, that's all handled by the drivers.

The GameCube had two memory spaces and you had to explicitly DMA between them. Sometimes people would set up a page fault handler that would DMA data over "automatically" to make it act like a single memory space. But, it was still your code explicitly doing the DMA deep down.

Yes, GS supports basic rules for repeated/tiled textures.

If you get adventurous, you can do better. The GS memory is a big open space without any special bits. Ex: textures don't have any headers or anything like that. However it is 2D instead of linear. So, you can arbitrarily treat any 2D area as a texture and it can work. It can also switch what it considers to be the current texture in a few cycles. Put this together and it's possible to set up tiling arbitrary sub-rectangles within a texture. Which is something that other hardware can only emulate via pixel shaders. IIRC, 3DSMax had this feature for offline rendering. The artists asked about it, but we didn't want to give it to them because it would be a pain to set up on the PS2 and too big of a pain on any other platform.
 
PC GPUs are traditionally much slower at this.

Even today's GPUs?

The VU1 has limited memory, but you can do whatever you want with it. So, upload maybe 64 polys worth of untransformed verts. Transform maybe 16 polys in a batch. Send all 16 to the GS for the first pass. Tell the GS to switch textures and blend mode. Send the same, already transformed 16 polys to the GS again. Switch the GS back to the texture/mode of the first pass. Transform 16 more polys. Send them to the GS. And, so on. That way you only transform each poly once.
This mean what if there is two passes, then not all geometry made in first pass and then all geometry in second pass, nbut only part of geometry first pass, then same part of geometry second pass, etc. till all frame is made?

The VIF0 and VIF1 DMA data from main memory into VU0/1 memory. The GIF DMAs data into GS registers.

But is it right to call VIF0, VIF1 anf GIF a processors?

If you get adventurous, you can do better. The GS memory is a big open space without any special bits. Ex: textures don't have any headers or anything like that. However it is 2D instead of linear. So, you can arbitrarily treat any 2D area as a texture and it can work. It can also switch what it considers to be the current texture in a few cycles. Put this together and it's possible to set up tiling arbitrary sub-rectangles within a texture. Which is something that other hardware can only emulate via pixel shaders. IIRC, 3DSMax had this feature for offline rendering. The artists asked about it, but we didn't want to give it to them because it would be a pain to set up on the PS2 and too big of a pain on any other platform.

Can you please give some example?
 
But is it right to call VIF0, VIF1 anf GIF a processors?
It's probably more correct to say they're pipes into/out of the various processors. Note that the GS isn't a programmable processor as such tho; it is hardwired with a set number of capabilities.

The GS is kind of like a self-playing piano in a western movie saloon; it reads the music roll (the display list), plays the notes exactly as inscribed, no deviation, no forms of expression of its own.
 
But is it right to call VIF0, VIF1 anf GIF a processors?

I believe VIF and GIF stand for vector interface, and graphics interface. So you have vector interface 0 for VU0, vector interface 1, graphics interface etc. It's where you send vector unit programs or graphics synthesizer command lists(or whatever the term is in ps2 speak). There's also the SIF0 (subsystem interface) and SIF1 for the IO processor and maybe the sound, not sure. Apparently those ones are a pain to emulate. :p
I remember reading that there's a total of 10 dma channels? or was that the saturn :|
 
I believe VIF and GIF stand for vector interface, and graphics interface. So you have vector interface 0 for VU0, vector interface 1, graphics interface etc. It's where you send vector unit programs or graphics synthesizer command lists(or whatever the term is in ps2 speak).

Yes, I know this, I just want to know if it's possible to count them like processors?

I remember reading that there's a total of 10 dma channels? or was that the saturn :|

This was PS2 not Saturn. But is 10 DMA chanells is a big deal? What are real benefits from 10 DMA channels? Is there something similar on Xbox or GC or PC of that time?
 
Back
Top