I'm working on Giga/PicoDrive, a Megadrive emulator, a bit at the moment. When I did a few measurements a few weeks ago I found 4ms was used on cpu, and 20ms used on graphics rendering on a GP32.
So I thought I may take a bit of time to jump up and down on the tile rendering and make it a bit more efficent. It's a line by line renderer at the moment, which I'm keen to hold onto for at long as possible because it makes raster effects so easy. But I may have to lose that at some point or at least make two graphics engines.
But I'm curious to see how fast a line by line tile renderer can go though.
Megadrive has 2 scroll planes A and B, with 4-bit 8x8 tiles from 4 palettes. Colour 0 is transparent. A tile can be selected high or low priority by a bit and can be flips x and y. All stuff I'm sure you know, but just to remind you ;-)
The first optimisation I have is the blank tile one - it remembers the 16-bit tile code which is used for a blank tile, and doesn't bother drawing it at all.
Reference piccy from Wiki:
Just looking at a typical screenshot from Sonic1, you could save a lot of time if you could avoid plotting the background tiles which were hidden. (But is it worth the overhead of calculating which are invisble?)
Also if you could plot the repeating tiles by just copying over the original data? etc.
My question is, there must be a lot of ideas and things people have tried in the past since there are so many emulators with tile rendering - what optimisations do you think worked well?
You learn something old everyday...