From http://nintendo.wikia.com/wiki/Nintendo_Entertainment_System:
[quote:id3nxi9j]The NES had 48 color pallets available and five different shades of grey. Twenty five different colors could be used on a single scanline. At one moment sixty four sprites can be shown on screen (each sprite must be 8x8 (minimum) pixels or 8x16 pixels (maximum)). A maximum of eight sprites can be placed on a scanline at once. ... The picture resolution for the NES is 256 x 240.
The genius of games on the NES was that they were fun and looked reasonable despite those stringent technical limitations. The games were probably extremely difficult to write, and probably involved hand-written assembly taking in to account the specific CPU and GPU architecture in use on the NES. It was also mains-powered (so no constraint on designing low-power chips) and 256x240 is only 61440 pixels (at 8 bits per pixel I think, so ~60kb).
A modern phone might be running at 1920x1080 in 32 bit color with arbitrary scaling and rotation - none of those limitations on colors or scan lines. That's about 8.2mb of pixels (135x as many as the NES). They run on very low power chips to save battery (and have to support a wide range of hardware), and Javascript has some overhead (although modern JITs are good at compiling the important bits to machine code). And despite all that, I can still get 20,000 sprites on-screen at 30 FPS on a modern phone, which is quite a lot more than the NES's maximum of 64! So I think there's been far more progress than you imagine.