That's a crazy system, and it sounds crap. Why did they go this route? What were the (hoped for) benefits?The way the Saturn rendered quads is by interpolating endpoints along the horizontal edges, then drawing textured lines between those endpoints. It had to draw the lines with an extra pixel where the slope changed, so all of the pixels had a neighbor to the left, right, top, or bottom. They did this to prevent gaps between the lines. When you account for this in the fact that quads weren't always parallelograms (so the lines converged on top of each other towards the shorter side) you ended up with locations inside the quad getting drawn with multiple pixels. That's what made the blending all glitchy and hence why little used it.
So many thanks for all this information! I wil read it some times and try to understand.The SH2s inside the Saturn can address different pools of memory (also of different type) at the same time as they integrated a flexible memory controller.
Ha-ha-ha! Welcome to reality!That's a crazy system, and it sounds crap. Why did they go this route? What were the (hoped for) benefits?
Interesting question. Since the source bitmap is a rectangle, it was probably easier to start scanning it in an ordered fashion rather than start from the target buffer and calculate the source pixel.That's a crazy system, and it sounds crap. Why did they go this route? What were the (hoped for) benefits?
In addition to the SH760x datasheet which was linked to earlier in this thread, you can try search for an Hitachi application note, dated 11/96, which is called 'Hitachi SH series memory interfacing'. Basically the lower 128MB of the address space are divided into 4x32MB zones, which could be connected to ROM, BurstROM, SRAM, DRAM, SDRAM or PSRAM. Dynamic bus sizing is also possible (i.e 8 bit to ROM, 32 bit to RAM). All the necessary signals to handle the different types of memory were provided by the SH2 itself.So many thanks for all this information! I wil read it some times and try to understand.
As mentioned, but I thought I might expand a little, VDP chips don't count as processors as such. Saturn had a sound system though consisting of Motorola 68k CPU and a custom 32-channel Yamaha FM/PCM audio processor with an integrated DSP, with its own separate RAM and DAC chips...And those 6 are two CPUs, SCU, VDP1, VDP2 and SH-1? Or some different chips?
Wait. Wasn't main RAM on 32-bit bus?In addition to the SH760x datasheet which was linked to earlier in this thread, you can try search for an Hitachi application note, dated 11/96, which is called 'Hitachi SH series memory interfacing'. Basically the lower 128MB of the address space are divided into 4x32MB zones, which could be connected to ROM, BurstROM, SRAM, DRAM, SDRAM or PSRAM. Dynamic bus sizing is also possible (i.e 8 bit to ROM, 32 bit to RAM). All the necessary signals to handle the different types of memory were provided by the SH2 itself.
Also good question, why CD-ROM needed it's own CPU?There was also - curiously - an additional Hitachi SH-1 CPU in the Saturn, seemingly dedicated exclusively for CDROM control.
Yes, and that's he point why I started this thread. Absolutely great hardware but very confusing to understand how it works.Truly an insanely crazy complicated console, the world has seen nothing like it either before or since.
You're right, my fault: the Saturn had 2 x 4Mbit SDRAM chips in parallel over a 32 bit bus; it was the 32x which had one single 2Mbit (that's right, it's not a typo) SDRAM chip over a 16 bit bus.Wait. Wasn't main RAM on 32-bit bus?
What's 'great' about it? A convoluted mish-mash that's not particular good at anything, Saturn smacks of a botched engineering job rather than a great console. Bad for devs, bad for the product, bad for Sega's finances. It's certainly interesting and a great case-study, and well loved by fans because of the games, but the machine itself is something of a joke AFAICS - how not to design and build a console.
So this is before bandwith savings from reducing fillrate became such an unquestionably more important optimization over simplifying computation at rendering. Thinking about it, that methot is not unlike doom's raycasting engine's way of drawing walls, only put on steroids to support arbitrary orientations...Interesting question. Since the source bitmap is a rectangle, it was probably easier to start scanning it in an ordered fashion rather than start from the target buffer and calculate the source pixel.
It's interesting to note that the Mega CD ASIC was capable of affine line rendering and used a backward texturing approach (it drew a raster line pixel by pixel, fetching the source texel accordingly) so Sega certainly knew the tricks.
It only rendered line by line though, so it was less flexible than the VDP1 and a lot more CPU overhead was involved.
If I'm not mistaken, this 'forward approach' was also used by the 3DO and by the iNFamous NV1. I don't know about the Jaguar
BTW: I don't think this link was posted http://koti.kapsi.fi/~antime/sega/docs.html The VDP1 & VDP2 manuals are a must to understand how 3D graphics were created on the Saturn
So it was good what they incuded this expansion for Saturn, or it wasn't so needed?
1) VDP1 have two framebuffer chips, so it have two framebuffers. Did they work like regular back and front buffers?
2) As I understand VRAM of VDP1also is storage fo textures? And question connected with previous. Textures go from CD-ROM to VDP1 directly or they first go to main RAM and then to VRAM?
4) What is stored in VDP2 VRAM? Framebuffer from VDP1 and backgrounds textures?
That's a crazy system, and it sounds crap. Why did they go this route? What were the (hoped for) benefits?
There was also - curiously - an additional Hitachi SH-1 CPU in the Saturn, seemingly dedicated exclusively for CDROM control. I've no idea if there's any way to use that chip for anything else, or what you might want to use it for... Truly an insanely crazy complicated console, the world has seen nothing like it either before or since.
I wonder how hard would it be to make the uv mapping more flexible. In theory they could, i believe, make it so it could skip pixels from or after a certain point. Say you want to draw a quad that only covers 24x24 texels, but the chip was made to only draw distorted 32x32 pixel btms, but with a texel-skip sort of feature, you could assign your quad a 32x32 pixel block that contains your desired 24x24 image and draw a slightly larger quad that skips the texela from the 25th column/line onwards. Idealy they'd have hardware acceleration for the operation that figures out the vertice position of the larger distorted quad based on the desired vertice position of the "clipped" rendered quad. Of course a system that didn't even accelerate basic 3d transforms and projection just clearly didn't give a shit about that hahaha.
I think one of the biggest technical feats on the Saturn was Virtual Fighter 2 running at 704x480 @ 60 by effectively using the VDP1/2. It used the saturn's high resolution mode for both background and polygons and at the time it really stood out compared to 3D fighters on the Playstation.
Who knows what tricks would have been found to maximize the pants-on-head hardware if the system would have survived longer but I think games like Burning Rangers show could have been possible (at better frame rates hopefully).
Its always nice to have these tech threads for older hardware since there weren't many (if any) online communities available to discuss them when they were relevant.
Of course Saturn's architecture was difficult, but from tech perspective this is one of it's kind system.What's 'great' about it?
As I understand, correct me if I'm mistaken, data goes from VRAM to framebuffer 0 then VDP1 reads it modifies, writes to framebuffer 1 and then reads it from it and sends to VDP2? Then again do the same for next frame?From the VDP1's point of view, yes. These aren't final buffers though, they get mixed with other layers on the VDP2 and that outputs to the display.
You mean data goes from CD-ROM to 512 kb CD-ROM cache and then main RAM gets it's data and VDP1 VRAM it's data? Is it the same with VDP2 VRAM and sound RAM? Or all data first goes to main RAM and then to other RAM pools?I think you can DMA from the buffers that CD data is read into directly to VRAM.
Then where stored VDP1 framebuffer which goes to VDP2?Nothing to do with VDP1 is stored there. It's for tiles and map data that the VDP2 renders.
Absolutely agree! Thank you for posting here. And thanks everyone!Its always nice to have these tech threads for older hardware since there weren't many (if any) online communities available to discuss them when they were relevant.
Just wanted ask about that. Is there enough space in VRAM. But you already told it. How big actualy could be resolution for Saturn game? Is it limited with 256 kb framebuffer size?There's not enough VRAM to store 704x480
As I understand, correct me if I'm mistaken, data goes from VRAM to framebuffer 0 then VDP1 reads it modifies, writes to framebuffer 1 and then reads it from it and sends to VDP2? Then again do the same for next frame?
You mean data goes from CD-ROM to 512 kb CD-ROM cache and then main RAM gets it's data and VDP1 VRAM it's data? Is it the same with VDP2 VRAM and sound RAM? Or all data first goes to main RAM and then to other RAM pools?
Then where stored VDP1 framebuffer which goes to VDP2?
Just wanted ask about that. Is there enough space in VRAM. But you already told it. How big actualy could be resolution for Saturn game? Is it limited with 256 kb framebuffer size?
Two questions:This is what happens during a frame:
1) VDP1 renders sprites to framebuffer A (could be referencing its VRAM for textures)
2) VDP2 combines scanlines from framebuffer B with other layers using its VRAM, puts the result on the screen
Next frame A and B are swapped.
If we simplify it. that means all data goes from CD-ROM cache to SCU and then it sends data to different RAM pools?All of these RAMs exist at least partially on the same address space, the SCU can DMA stuff between various locations directly without having to store things in main RAM.
My question wasn't correct. I mean when VDP1 sends framebuffer to VDP2 where it's stored? Or it's just go to VDP2 and VDP2 combines it with backgrounds?In one of its two framebuffer RAMs.
Yes 640x200x16bpp is 256 kb, but this isn't 4:3 aspect ratio. Did Saturn have some upscaler?The 3D part is limited to the 256KB anyway. Maybe you could have higher resolution and only show the 2D layers on the other part of it. Like 640x240 @ 16bpp, but the 3D part only takes up 640x200 and the rest is a HUD or something.
1) VDP1 renders only sprites to framebuffer or polygons too?
2) You mean VDP1 renders to framebuffer A, then read it and sends it to VDP2 and at the same time renders to framebuffer B then reads it and send it to VDP2 and at the same time renders to framebuffer A and so on?
If we simplify it. that means all data goes from CD-ROM cache to SCU and then it sends data to different RAM pools?
My question wasn't correct. I mean when VDP1 sends framebuffer to VDP2 where it's stored? Or it's just go to VDP2 and VDP2 combines it with backgrounds?
Yes 640x200x16bpp is 256 kb, but this isn't 4:3 aspect ratio. Did Saturn have some upscaler?
This is why some people say what Saturn is 2D machine and not 3D?Polygons in Saturn are "distorted sprites."
Ok. When VDP1 complets write to framebuffer A, where this framebuffer data goes?VDP1 doesn't read or send anything to VDP2. VDP2 reads from the other framebuffer.
So, you not sure about it?I guess?
How? VDP1 can't send framebuffer to screen, as I understand it goes to VDP2 and VDP2 combines it with his own data (background layers) and then sends final image to the screen.It doesn't have to be stored anywhere.
It just goes through VDP2 to screen and simultaneously combines with VDP2 background layers? Sorry, this system is just... to hard to understand fast. Now I understand a little, why many people say it's hard to work with.It doesn't have to be stored anywhere.
I was thinking about that. But didn't thought what it could be true.The 3D layer doesn't have to take up the whole screen.
How big these gaps were? If this question is correct.This is also why they had visible dark gaps between the scanlines. PS1/Saturn/N64 were more likely to actually use interlacing sometimes.