Hacker News new | ask | show | jobs
by WorldMaker 46 days ago
The consoles at the time had dedicated sprite video RAM and hardware and dedicated hardware instructions for background scrolling. The NES for instance had up to 64 sprites (independently moving 16x16 or 32x32 pixel images) supporting up to 8 of those sprites per scanline. The NES background layer was a relatively simple tile map that supported smooth scrolling. All of which was managed by a dedicated hardware Picture Processing Unit [1].

PCs were designed to be general hardware and it didn't seem to make sense to create a generic "PPU" for the PC, so instead game engines at the time (and many game engines to this day) had to emulate one entirely in software. The video RAM of EGA and VGA is just one big blob of pixels, or perhaps two if your system supported double-buffering. At the hardware level it doesn't have concepts like sprites or scrolling backgrounds.

Carmack was one of the first (if not the first; Commander Keen was also among the first commercially successful attempts) to get a software "PPU" renderer on the PC working reliably in real time. Another notable achievement for side scrollers on the PC in that era was Cliff Bleszinski managing to software render the parallax effects similar to Sega's "Blast processor" PPU (notable for "gotta go fast" Sonic games) for Jazz Jackrabbit (in 1994).

It has sort of long been the arc of PC development of eventually doing entirely in software what consoles and arcades were doing with dedicated and/or one-off hardware. (Right up until about the invention of the modern GPU when suddenly the PC was leading graphics hardware in a different way.)

[1] https://www.nesdev.org/wiki/PPU

1 comments

Jazz Jackrabbit was coded by Arjan Brussee (from Ultra Force demo group). Cliff Bleszinski did the design.