15

After looking in to the video game consoles of the 80s and 90s, I see that they relied upon video chips that do most of the work required to display graphics for games. The CPU simply tells the video chip what image at what memory location to display on the screen. Smooth scrolling 2D games were possible since all the graphics and the scrolling background was all done by a video chip. By the early 90s, textures could be sufficiently well transformed and displayed on the screen to allow simple 3D graphics.

I've heard of Direct Draw, which seems to be Microsoft's method of implementing some of these features and allowing video card makers to make the hardware to support it. Did PC games at the time not use 2D acceleration, or was the the 2D acceleration on game consoles far superior to what PCs at the time had to offer? A NES from 1983 has a 1.8MHz CPU, and a SNES from 1990 has a 3.58MHz CPU, and both have smooth scrolling 2D games. The SNES even has basic 3D games.

I seem to remember that smooth scrolling PC games at 320x200 resolution didn't come until around the time 486 CPUs came along, and higher resolutions games weren't seen until we got past ISA video cards and even faster CPUs came along.

Edit: I'm not necessarily limiting this to PC graphics. Discussion about Apple or things like SGI workstation graphics are welcome too. 2D acceleration isn't just for games. Scrolling pages and 2D graphics like maps benefit from acceleration.

I see that there are now 4 votes to close the question. The question is about 2D acceleration features on computer graphics chips, specifically features that would help 2D games. Can the question be changed? If there is a problem with off topic discussions, isn't that more of a problem with the responses and not the question? I removed "comparing to game consoles" from the title.

This question is about the 2D acceleration features, later encouraged by Microsoft Drect Draw, that early video cards had.

13
  • 1
    You can specifically say what kinds of 2D PC video cards you are thinking about? All the cards i can think of that had 2D acceleration also had some kind of 3D acceleration as well, the cards before that up to VGA didn't have any acceleration at all (which is why you needed CPUs and busses that are fast enough (IIRC Wing Commander would run even on pre-486 CPUs, provided overall frequency was high enough). Consoles and many home computers had tiles and sprite support, PC cards didn't.
    – dirkt
    Commented Aug 2 at 8:00
  • 1
    It depends what era cards you talk about. Purely 2D cards span for about 20 years. VGA cards of DOS era had none, later cards in Windows 3.11 had some basic fill and copy and hardware mouse cursor features, and more complex and newer PCI/VLB cards in Windows 95/98 DirectX era could have anything and DirectX used the hardware features available and then used software for features not available.
    – Justme
    Commented Aug 2 at 8:14
  • 2
    Ah, S3. Yes, they had some cards that were purely 2D Windows accelerators, for a very short timespan until they also added 3D. Though I am not aware of any games written specifically for those, but potentially some games could make use of them.
    – dirkt
    Commented Aug 2 at 8:43
  • 2
    I think the search term you want is "windows acceleration" as PC 2D accelerated graphics cards weren't really used or marketed towards gaming, but rather improving GUI performance in the Win3.x era.
    – mnem
    Commented Aug 2 at 17:18
  • 3
    I might be wrong, so don't take it too seriously, but I've voted to close as unfocussed. My feeling is that the question as currently posted is "compare PC/Mac/SGI 2d acceleration to consoles of the same era", which invites lengthy and digressive answers rather than a punchy StackOverflow-style definitive, sourced answer. Others may well disagree, and often do. Not a big deal. Just providing this comment to explain my vote.
    – Tommy
    Commented Aug 2 at 19:54

3 Answers 3

14

Game consoles used a combination of several 2D hardware acceleration techniques, so let's see how each of them compares to what was available on the PC:

Tile-based graphics

This was commonplace on NES / SNES / Sega MegaDrive, but was never really supported on the PC because of the inherent limitations. What worked really well for platformer-style games where levels were composed from a limited set of tiles stored in the cartridge ROM would be of much less use on a general-purpose personal computer.

BTW even on the consoles, certain games had to resort to trickery such as dynamically generating tiles in RAM if the game needed to generate graphics images "on the fly". From what I recall, Elite on NES heavily relied on dynamic tiles because it was the only way to generate dynamic wireframe 3D images.

The closest approximation on the PC would be reprogramming the character generator in text mode, with little practical use for game development (although some demoscene productions are known to use this technique).

Hardware sprites

Again this was "bread-and-butter" of game development on the consoles, where one would use tile-based graphics for the playfield and the sprites for the player character and the "enemies".

Unfortunately, PC video cards did not really support hardware sprites except for the mouse cursor. Maybe some exotic models did, but this was not commonplace for sure.

Hardware scrolling

PC video cards did support this starting from EGA if I'm not mistaken. In fact, Commander Keen used hardware scrolling quite heavily.

However since the PC graphics was frame buffer-based rather than tile-based, one would need to get really creative to put EGA/VGA hardware scrolling to good use. So more kudos to the programming genius of Mr. John Carmack.

Also, hardware scrolling support on the PC lacked parallax scrolling support.

It should be noted that the techniques above were gradually losing their relevance with the growth of PC CPU frequencies and video card bus speeds. By the time DirectDraw was introduced, PC hardware was perfectly capable of software-only offscreen composition and video page flipping which yielded sufficient FPS.

Racing the Beam

Game consoles enabled quite accurate tracking of the CRT beam position which allowed such trickery as dynamically switching color palettes or tile banks mid-screen, or displaying more hardware sprites than the video circuitry allowed (with some limitations, but still).

On the PC, if my memory serves me well, some beam racing became possible starting from VGA, but unlike on the consoles, the PC graphics circuitry had neither "display lists" (think code to be executed in parallel by the video chip) nor programmable interrupts for tracking the beam position, so racing the beam heavily involved reprogramming the timer and handling timer interrupts.

6
  • 5
    Some techniques were possible on pre-VGA hardware but either not known at the time, or only on certain video cards, or both. There's a draw-droppingly good demo that came out in the last 3 years or so that does all these kinds of tricks on very early IBM PC hardware: 8088 MPH, Area 5150 Commented Aug 2 at 15:26
  • "[...] nor programmable interrupts for tracking the beam position, so racing the beam heavily involved reprogramming the timer and handling timer interrupts." A few PC cards did have a vertical retrace interrupt. The graphics built into the PCjr, and MCA versions of VGA did, for a couple of examples. The EGA documented having it, but it didn't work on most cards (but I did see a few where it worked). Commented Aug 2 at 17:34
  • There were also display-list cards available of PCs in the late 80's, but all of them of which I'm aware did 3D, and were supported only by CAD programs, not games. Commented Aug 2 at 17:48
  • 1
    It depends what features you consider to be 'acceleration'. For example, EGA and VGA have a 4-plane framebuffer, and have the ability to perform some operations on all four planes at once. It's noticeable on the Amstrad PC1512 / 1640; the PC1512 has a 16-colour 640x200 mode but must write to each plane in turn, causing flickering when GUI elements like menus are drawn, whereas the PC1640 can take advantage of its EGA chipset to draw the elements in a single pass.
    – john_e
    Commented Aug 2 at 19:15
  • argh! s/draw-droppingly/jaw-droppingly/ Commented Aug 4 at 3:29
12

The fundamental difference between some NES and a PC video card is that the PC video card just outputs pixels from the framebuffer, serially, one by one. It was like that since the beginning of times (well, from the times the PC got graphics support). And to build any kind of complex scene for a game, or a GUI - is to write the actual image data into the frame buffer. 2D acceleration helps CPU by offloading simple tasks like drawing lines, rectangles, copying blocks of pixels from one place to another. But that's it. Any kind of acceleration is just a sequential application of the hardware primitives that replace common access patterns from CPU. You start at some point (blank screen, or the old frame content, whatever), you perform a series of data writes or hardware acceleration calls - and in the end you've got your image in the framebuffer - all the pixels for the scene. Same goes with 3D, it just builds the framebuffer content. Some steps on certain hardware may hide/cache intermediate states of the scene without spilling it into the framebuffer, but in the end the related portion of it will be written in the framebuffer.

Now the NES does not write any pixels. It synthesizes the output directly by inspecting what sprites are currently located in the area corresponding to on-screen pixel. Since there are so much locations you could inspect and combine in a time given for the onscreen pixel, and the inspection is done by a dedicated hw blocks, of which you have only fixed amount of it - you have the limits on the number of sprites and background layers on NES. This limit does not exist on PC, because it is allowed to spend as much time as it wants to write all the pixels to the framebuffer, the output will display whatever the current state of framebuffer is, regardless if the scene is completed or not.

The only thing common between NES and 2D accelerated PC card is the hardware overlays (on PC), typically used to play video. That was like a huge sprite, where the pixel content would be determined not by the framebuffer content, but by a separate image, typically stored in the different color space, like YUV vs RGB. And the video output would select which "pixel" to show depending on the overlay location.

Another kind of a sprite on 2D accelerated PC video card is the hardware mouse cursor, as reminded by @hippietrail. While earlier programs had to draw the mouse cursor image directly into the framebuffer as pixels, and then repaint the affected areas each time the mouse moves, the use of hardware accelerated mouse cursor allows programs to avoid painting the mouse explicitly. Such cursor could have different color depth and could be animated, without affecting the application in any way.

4
  • 3
    PC 2D graphics accelerators often supplied hardware sprites, or at least one sprite, for the mouse pointer. Just as on consoles and all systems with hardware sprites there didn't have to be drawn into the framebuffer. Depending on what you mean by 'frame buffer', the earliest PCs could be seen as not having/needing one since in text mode they also don't output pixels but "synthesize" directly from a character generator which supplies the pixels. It could also be argued that just having VRAM would qualify as graphics acceleration. Commented Aug 2 at 8:32
  • @hippietrail Also such 2D accelerators could do some basic fill, copy, and blitting. But it would require DOS programs to specifically have support for that card, so for gaming it was rather useless. Windows 3.X might have used those features if you installed the driver for your card.
    – Justme
    Commented Aug 2 at 8:47
  • @Justme Yes for me I stopped playing games on computers after Doom. Games may or may not have had drivers for various cards. OSes did. I didn't notice the question was specifically about games, I'll go ahead and tag it as such. Commented Aug 2 at 8:57
  • 2
    Could you edit your answer to discourage the question from being closed? I think starting with PC graphics 2D acceleration features would be better, and then compare to game consoles at the end would help. Commented Aug 5 at 16:36
12

Out of curiosity I tried to collect card brands and chipsets that had 2D acceleration, but no 3D acceleration. These cards seemed to be available for a short window in the early 90s. So far I have:

  • 1987: IBM 8514
  • 1990: ATI Mach 8
  • 1991: S3 911,911A
  • 1992: ATI Mach 32
  • 1992: Tseng ET4000/W32 series (not ET4000 itself)
  • 1993: Cirrus CL-GD5426 and successors
  • 1994: ATI Mach 64 until VT/264VT4
  • 1994: S3 Vision864, Vision964
  • 1995: S3 Trio64 and 64V+

After that, both ATI and S3 started to include 3D acceleration.

ATI mach was an IBM 8514 clone, S3 Trio also used the Vision chipset, later S3 cards with 3D had a completely different 2D acceleration scheme.

2D features consisted of BitBLT, lines and polygons, optionally with fill, and raster operations for the primitives. You can find datasheets if you google a bit, e.g. S3 Trio or Tseng ET4000/W32.

The IBM 8514 was on Microchannel hardware, and I expect the usage was mostly CAD systems etc., I'd be really surprised if any games made use of that.

I remember special drivers being available for the ATI Mach and S3 Trio cards, under Linux as well, so you had some accelerated operations for X.

I don't know any specific games which made use of ATI Mach or S3 Trio hardware. I don't think scrolling 2D games in particular would have much benefitted from the acceleration features.

I wouldn't count the single small sprite for the cursor that those cards offered as real "acceleration".

7
  • 3
    "real acceleration" = "true scotsman"? Commented Aug 2 at 15:15
  • In 1993 I had a Diamond SpeedStar Pro that claimed to have acceleration for Windows and CAD, it used a Cirrus Logic chipset on VLB. As I recall there was a noticable improvement running AutoCAD compared to classmates with similar computers but without the card. This page has the technical details of the card. Commented Aug 2 at 15:48
  • There were also a number of cards (though none of them particularly popular) based on the Intel 82786 or the TI 34010 (and later 34020), and one card that had both. The 82786 mostly did hardware windowing, but the 34010 was pretty much a full-blown CPU with instructions for a lot of bit-oriented "stuff", to support things like blitting. Both of these processors were released in 1986. Commented Aug 2 at 17:27
  • 1
    You may want to add Tseng based cards. While original ET cards did not offer more functions, they provided great 2D performance due their extreme fast memory interface. The 1994(?) ET4000/W32 then added full 256 ROP BitBlit with up to 4 MiB of local RAM and 32 Bit main RAM. Next to all 2D handling could be fully offloaded. Great with WinG and DirectDraw. In the mid 1990s they essentially ruled the low end/professional market. I preferred ET4000 (with Vooodoo added) until the GeForce bombed everything away. IIRC I bought it the week after Christmas 1999, off the first batch arriving in DE.
    – Raffzahn
    Commented Aug 2 at 21:56
  • 3
    Richard F. Ferraro - "Programmer's Guide to the EGA, VGA, and Super VGA Cards (3rd Edition)" 1600 pages, 1994 archive.org/details/… Some more cards are described in addition to S3 and Trident: Cirrus Logic, Oak, Tseng Labs, Paradise/Western Digital, Weitek. :) A friend of mine wrote a 2D blitting routine for a Cirrus card based on that book, and it worked and was super fast, a full screen could be blit dozens of times over. Commented Aug 2 at 22:31

Not the answer you're looking for? Browse other questions tagged .