tepples wrote:And unless the image is smaller than about 30K, you will get tearing as you show a half-completed frame.
This isn't quite true. Since the memory isn't actually overwritten during active display, you can use fractional buffering, where the new data goes into free space first, and then after the final frame before the switch you overwrite part of the old data. The idea is essentially to double buffer only what you can't update in one shot. The gain over normal double buffering isn't massive, but it can help.
The game I'm working on uses forced blank to get enough bandwidth for half a playfield worth of Super FX graphics (half of 144x192 at 4bpp = 6912 KB) plus OAM and OBJ table updates and stuff like that. I only need a little over 20 KB of VRAM for the blitted layer instead of 27 KB, since being able to transfer half the data in one (extended) VBlank means I can use 3/2 buffering.
So there is no space for at least half-screen buffering?
There's 64 KB of VRAM, same as the Mega Drive. It's just that 8bpp chews through it twice as fast. According to my calculations, on an NTSC SNES you can do resolutions like 256x144x8bpp at 30 fps, or 216x176x8bpp at 20 fps, if you really push it. At 4bpp you can double buffer a full screen, but your frame rate will be down around 12 fps because VBlank is so short (again, this is on an NTSC machine - PAL is obviously a different story). Unlike Mega Drive, there is no FIFO; if you try to send data to the PPU while it's busy, the data will be lost.
By "half-screen buffering", do you mean what I've called 3/2 buffering above?
Maybe the buffer using interlace can be used?
I'm not sure what you mean by this.
In Mode 5 or 6, setting interlace mode makes the PPU render tiles as half-height, so you're just doubling the amount of data needed to fill an area of the screen (which is already doubled by the fact that Modes 5 and 6 are 512 pixels wide, but neither mode can do 8bpp so you can't get
really crazy). In any other mode, yes, you can flip between two tilemaps every frame to get a 448i image (well, you can't move the tilemap in Mode 7, but you
can move the camera), but I'm not clear on how that would improve the double-buffering situation.
greatkreator wrote:psycopathicteen you mean to use mode7 and scale x2 to fill all the screen to achive the same effect?
Wolfenstein 3D did exactly that. 8bpp software raycasting at 15 fps with no special chips, because the Mode 7 format is bytemap rather than bitplane; one byte equals one pixel, so it's easy to render into. Also because they were able to draw at 112x80 and just expand it to 224x160 with no CPU overhead...
They didn't exactly push the bandwidth, though - with the screen size they used, they could easily have done 60 fps (with an arbitrarily powerful rendering processor)...
I need to display RGB array on the screen. What can SNES do at the most?
This:
https://www.youtube.com/watch?v=sV1w_H8WxUI