ittyBittyByte wrote:
If one was to replace color pixel by pixel during drawing or draw anything at all pixel by pixel in a modern game performance would become very slow. The NES clearly found a very efficient way, so what was used?
The NES does precisely this: it draws every pixel every frame. The PPU repeats the process of drawing the screen from pixel (0, 0) down to pixel (255, 239) 60 times per second (or 50, if PAL), based on data from the name tables, pattern tables, OAM, palette RAM and its internal registers. If any of these things change, the generated image will immediately reflect the changes.
The PPU was designed to draw images this fast, and it never slows down, because all of its tasks take a constant amount of time. What slows games down is physics, AI, and the overall complexity of the game world, but the PPU will still output 60 (or 50) images per second, even if some of these images are repeats due to the CPU not having enough time to change the video parameters.
Anyway, palette changes on the NES are fast because the program only has to change 25 bytes to select all new colors, and when drawing the next frame the PPU will repeat the entire drawing process, but using the new colors this time.
I don't know much about modern game programming, but I'm pretty sure that at lower resolutions you can still redraw the entire image pixel by pixel, since many emulators do that while running full speed. If you're going for higher resolutions though, I don't see why you'd need paletted graphics...