This is probably the wrong place to ask... this is a pretty smart audience, but maybe not well versed in the ways of electronics. Why are software scaling routines so rare in video game systems that don't have hardware scaling? Generally speaking, when you see a game system like the Genesis attempt the illusion of 3D movement, it's done by redrawing the characters at different sizes, which is memory intensive and causes flicker, as we've seen in the Genesis version of Space Harrier. Why can't a scaling routine be written in software that stretches sprites on the fly, rather than having to re-draw them twenty or thirty times? Would it be too slow? Are there limitations beyond speed that would affect performance? Is it just more efficient for scaling and rotation to be baked into the hardware?
I've seen good 3D effects in Genesis games... The Lawnmower Man is shockingly fluid, and the same could be said for the otherwise lackluster Street Racer. I'm just curious as to why this wasn't more commonplace.
Also, I searched and found this:
"The reason why the Genesis didn't scale sprites is because of the cost of memory. In order to scale sprites you need to have a buffer in memory that can support direct manipulation on a pixel level. These old systems used tile based background layers to reduce the memory footprint of a full screen's worth of tiles at the cost of pixel granularity -- background layers can only be manipulated in 8x8 tiles at a time.
The entire reason sprites were a thing was because memory was at a premium, and having memory buffers which could be drawn on any pixel on the screen cost a lot.
Now, all that said, you
can scale sprites in software on the genesis by devoting a bunch of sprites together to make a buffer. It won't be big enough to cover the entire screen, but since you can directly manipulate every pixel on a sprite, putting together multiple 32x32 sprites can be used to create a soft canvas for drawing the scaled pixels.
Quite a few games actually do this, like the ending to super fantasy zone.
The Sega CD had an ASIC which could do the math needed to scale pixels and would present them to the genesis as an area of 512kb shared memory. This is why games like Sonic CD could do mode 7 special stages -- the Sega CD allowed the genesis to use the cartridge slot essentially like a memory buffer."
That said, Art of Fighting on the SNES had a rudimentary sprite scaling effect - it did it by not drawing every other pixel / row of pixels as it had to halve the size of the characters, if I recall correctly, which is pretty computationally cheap, if I understand correctly. Old school programmers were geniuses; they took an incredibly limited set of systems and did things that the hardware engineers could never have imagined.