Traditional fire effects don’t play well with non-bitmapped displays, but I expect it can be made to work well at a sluggish frame rate. The algorithm is roughly:
- define a palette from “hot” to “cold” (eg white to yellow to orange to black), with higher values being “hotter”
- each pixel is the average of the three neighbours below it, minus a little bit for “cooling”
- the bottom row is randomly generated
- loop
Doing this with tiles would be super blocky. Maybe doing it at 4x4 resolution would look ok and avoid the need to generate tiles on the fly.
Another tactic would be to try to do it all with palette effects, but I suspect it would look pretty bad.
I've decided I quite like the effect Haroldoop has presented.
Looks like in place of solid colour palette tiles it's using dithered tiles to get a broader range of palette transitions and blend edges together to reduce the appearance of blockiness.
I'm trying to decide how many unique tiles would be required to produce a similar effect.
It’s just using dithering because the NES is limited to four colours per palette - here, white - yellow - red - black. On GG you could do a lot better and even betterer with dithering. The idea is to make n tiles where n-1 is the “hottest” colour (white), then adjust the cooling factor accordingly to make it have the height you want.
It's not the palette it's the limited view window, without dithering the fire would have to take up the entire 160x144 window to look anywhere decent, the dithering gives the illusion of pixel resolution instead of tile resolution.
Here's a sort of simulated fire using no dithering (SMS palette only).