SVGALib

Last updated
SVGAlib
Original author(s) Harm Hanemaayer [1]
Developer(s) Matan Ziv-Av
Stable release
1.4.3 / June 2, 2001;23 years ago (2001-06-02) [2]
Preview release
1.9.25 [2]
Written in C
Operating system Linux, FreeBSD
Platform x86, x86-64
Type Library
Website www.svgalib.org

SVGAlib is an open-source low-level graphics library which ran on Linux and FreeBSD and allowed programs to change video mode and display full-screen graphics, without the use of a windowing system. [3] [4] Alongside X11 and the General Graphics Interface, it was one of the earliest libraries allowing graphical video games on Linux.

Contents

History

The first version of SVGALib was based on version 1.2 of another library, VGALib by Tommy Frandsen. [5]

Several games like Ambrosia Software's Maelstrom by Sam Lantinga, the first-person games Freaks! and Space Plumber [6] [7] using the QDGDF library, [8] [9] and most famously id Software's Doom (alongside an X11 version) and Quake (after the submission of a third-party patch based on leaked source code [10] ) were ported to use SVGALib from other operating systems, [11] as was Doom porter Dave Taylor's Abuse .

Wolfenstein 3D was also ported following its source code being released in 1995, [12] as well as the id produced Heretic , Hexen and Hexen II after 1999, [13] and Descent and Descent II by Parallax Software after 1998. [14] Certain source ports for Doom, Quake, and Abuse maintained support for SVGALib. [15] The library is also supported by the MAME/MESS emulator. [16]

First party Linux games that have supported it include Alizarin Tetris, [17] Bdash, [18] Fleuch, [19] Hatman, [20] Intelligent FRAC, [21] Koules, [22] LinCity , [23] [24] Linberto, [25] Quadra, [26] Repton, [27] SABRE, [28] Thrust (also supported GGI), [29] Zarch, [30] and Zblast, [31] among others. [32] [33] [34]

SVGALib was popular in the mid to late 1990s. [35] [36] A reference book, Linux Graphics Programming with SVGAlib, was authored by Jay Link in 2000. [37] Around the turn of the millennium, many applications that used it migrated to X11 and SDL, [38] which could (until SDL 2.0) make use of SVGAlib as a video driver. [39] [40] This was in part due to the risks of privilege escalation due to SVGAlib requiring applications to run from root. [41] [42] [43]

Related Research Articles

<i>Quake</i> (video game) 1996 video game

Quake is a first-person shooter game developed by id Software and published by GT Interactive. The first game in the Quake series, it was originally released for MS-DOS, Microsoft Windows, and Linux in 1996, followed by Mac OS and Sega Saturn in 1997 and Nintendo 64 in 1998.

<span class="mw-page-title-main">Simple DirectMedia Layer</span> Free software multimedia library

Simple DirectMedia Layer (SDL) is a cross-platform software development library designed to provide a hardware abstraction layer for computer multimedia hardware components. Software developers can use it to write high-performance computer games and other multimedia applications that can run on many operating systems such as Android, iOS, Linux, macOS, and Windows.

<span class="mw-page-title-main">John Carmack</span> American computer programmer and video game developer (born 1970)

John D. Carmack II is an American computer programmer and video game developer. He co-founded the video game company id Software and was the lead programmer of its 1990s games Commander Keen, Wolfenstein 3D, Doom, Quake, and their sequels. Carmack made innovations in 3D computer graphics, such as his Carmack's Reverse algorithm for shadow volumes.

<i>MIDI Maze</i> 1987 video game

MIDI Maze, also known as Faceball 2000, is a networked first-person shooter maze game for the Atari ST developed by Xanth Software F/X and released in 1987 by Hybrid Arts. The game takes place in a maze of untextured walls. The world animates smoothly as the player turns, much like the earlier Wayout, instead of only permitting 90 degree changes of direction. Using the MIDI ports on the Atari ST, the game is said to have introduced deathmatch combat to gaming in 1987. It also predated the LAN party concept by several years. The game found a wider audience when it was converted to Faceball 2000 on the Game Boy.

<span class="mw-page-title-main">Allegro (software library)</span> Software library for video game development

Allegro is a software library for video game development. The functionality of the library includes support for basic 2D graphics, image manipulation, text output, audio output, MIDI music, input and timers, as well as additional routines for fixed-point and floating-point matrix arithmetic, Unicode strings, file system access, file manipulation, data files, and 3D graphics. The library is written in the C programming language and designed to be used with C, C++, or Objective-C, with bindings available for Python, Lua, Scheme, D, Go, and other languages. Allegro comes with extensive documentation and many examples.

<span class="mw-page-title-main">Gambas</span> Integrated development environment

Gambas is the name of an object-oriented dialect of the BASIC programming language, as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic. Gambas is also the word for prawns in the Spanish, French, and Portuguese languages, from which the project's logos are derived.

id Tech 1, also known as the Doom engine, is the game engine used in the id Software video games Doom and Doom II: Hell on Earth. It is also used in Heretic, Hexen: Beyond Heretic, Strife: Quest for the Sigil, Hacx: Twitch 'n Kill, Freedoom, and other games produced by licensees. It was created by John Carmack, with auxiliary functions written by Mike Abrash, John Romero, Dave Taylor, and Paul Radek. Originally developed on NeXT computers, it was ported to MS-DOS and compatible operating systems for Doom's initial release and was later ported to several game consoles and operating systems.

DirectFB, now continued as DirectFB2, is a software library with a small memory footprint that provides graphics acceleration, input device handling and abstraction layer, and integrated windowing system with support for translucent windows and multiple display layers on top of the Linux framebuffer without requiring any kernel modifications. DirectFB is free and open-source software subject to the terms of the GNU Lesser General Public License (LGPL).

A source port is a software project based on the source code of a game engine that allows the game to be played on operating systems or computing platforms with which the game was not originally compatible.

<i>Abuse</i> (video game) 1996 video game

Abuse is a run and gun video game developed by Crack dot Com and published by Electronic Arts in North America and Origin Systems in Europe. It was released on February 29, 1996 for MS-DOS. A Mac OS port of the game was published by Bungie and released on March 5, 1997. The game's source code, along with some of the shareware content, has been in the public domain since the late 1990s and has been ported to Linux and many other platforms.

id Tech 3 Video game engine

id Tech 3, popularly known as the Quake III Arena engine, is a game engine developed by id Software for its Quake III Arena. It has been adopted by numerous games. It competed with the Unreal Engine; both engines were widely licensed.

<span class="mw-page-title-main">Lincity</span> Free and open-source SimCity clone

Lincity is a free and open-source software construction and management simulation game, which puts the player in control of managing a city's socio-economy, similar in concept to SimCity. The player can develop a city by buying appropriate buildings, services and infrastructure. Its name is both a Linux reference and a play on the title of the original city-building game, SimCity, and it was released under the GNU General Public License v2.

<i>Quake II</i> engine Video game engine

The Quake II engine is a game engine developed by id Software for use in their 1997 first-person shooter Quake II. It is the successor to the Quake engine. Since its release, the Quake II engine has been licensed for use in several other games.

<span class="mw-page-title-main">Crack dot Com</span>

Crack dot Com was a computer game development company co-founded by ex-id Software programmer Dave Taylor, and Jonathan Clark.

<span class="mw-page-title-main">FCEUX</span>

FCEUX is an open-source Nintendo Entertainment System and Family Computer Disk System emulator. It is a merger of various forks of FCE Ultra.

<span class="mw-page-title-main">Open-source video game</span> Video game whose source code is open-source software

An open-source video game, or simply an open-source game, is a video game whose source code is open-source. They are often freely distributable and sometimes cross-platform compatible.

General Graphics Interface (GGI) was a project that aimed to develop a reliable, stable and fast computer graphics system that works everywhere. The intent was to allow for any program using GGI to run on any computing platform supported by it, requiring at most a recompilation. GGI is free and open-source software, subject to the requirements of the MIT License.

Linux-based operating systems can be used for playing video games. Because few games natively support the Linux kernel, various software has been made to run Windows games, software, and programs, such as Wine, Cedega, DXVK, and Proton, and managers such as Lutris and PlayOnLinux. The Linux gaming community has a presence on the internet with users who attempt to run games that are not officially supported on Linux.

<span class="mw-page-title-main">Timothee Besset</span> French software programmer

Timothée Besset is a French software programmer, best known for supporting Linux, as well as some Macintosh, ports of id Software's products. He was involved with the game ports of various id properties through the 2000s, starting with Quake III Arena. Since the development of Doom 3 he was also in charge of the multiplayer network code and various aspects of game coding for id, a role which had him heavily involved in the development of their online game QuakeLive. Since departing id in January 2012 he has worked as a software contractor, including for Valve Software.

References

  1. Pitzel, Brad (1994-02-12). "Sasteroids v1.0 release (vga arcade game)" . Retrieved 2023-10-01. This started out as a direct port of xasteroids to run under svgalib (super-vga graphics library by Harm Hanemaayer)
  2. 1 2 "SVGALIB" . Retrieved 16 October 2022.
  3. Link, Jay. "SVGAlib Tutorials". www.svgalib.org. Retrieved 16 October 2022.
  4. Link, Jay (1999-09-30). "Easy graphics: A beginner's guide to SVGAlib". Developer.com. Retrieved 2023-09-29.
  5. "svgalib(7): low level graphics library for - Linux man page". linux.die.net. Retrieved 16 October 2022.
  6. Wilson, Hamish (2024-09-03). "Building a Retro Linux Gaming Computer Part 43: Demons and Angels". GamingOnLinux . Retrieved 2024-09-04.
  7. "Space Plumber 1.1.0 RC1 review". Nixbit. Retrieved 2023-09-29.
  8. TTC Development Team (2001-01-01). "Quick and Dirty Game Development Framework" . Retrieved 2024-06-07.
  9. "Quick and Dirty Game Development Framework 0.9.1 review". Nixbit. Retrieved 2024-06-07.
  10. Wilson, Hamish (2023-02-27). "Building a Retro Linux Gaming Computer - Part 27: Lost Souls". GamingOnLinux . Retrieved 2023-02-27.
  11. Karim, Jawed. "Porting MS-DOS Graphics Applications". ACM . Retrieved 2023-09-29.
  12. DarkOne (2005-04-10). "Wolfenstein3D Links". NewWolf. SourceForge . Retrieved 2023-09-26. Linux Wolf - Runs either in a window (xwolf3d) or with svgalib (swolf3d).
  13. Wilson, Hamish (2022-03-15). "Building a Retro Linux Gaming Computer - Part 16: We Are All Doomed". GamingOnLinux . Retrieved 2023-09-29.
  14. ptesone (2004-04-06). "can only run d1x as root!". Linux Questions. Retrieved 2023-10-04.
  15. Wilson, Hamish (2023-11-06). "Building a Retro Linux Gaming Computer Part 34: Abusing the System". GamingOnLinux . Retrieved 2023-11-07.
  16. "SVGAlib help". Easy MAMECab. Retrieved 2023-12-07.
  17. "Alizarin Tetris". Home of the Underdogs . Archived from the original on 2006-01-03. Retrieved 2023-09-29.
  18. "Freeware Boulder Dash Clones - Unix". Boulderdash - Martijn's Boulder Dash Fan Site. Retrieved 2023-11-07. A Linux clone of Boulder Dash with 256 colour graphics and digitized sounds. It requires the svgalib library.
  19. Kroll, Jason (2000-01-31). "GAMES FOCUS". Linux Journal . Retrieved 2023-12-18.
  20. Wilson, Hamish (2023-12-12). "Building a Retro Linux Gaming Computer Part 36: Entertainment for X Windows". GamingOnLinux . Retrieved 2023-12-15. Hatman - The Game of Kings is an impressive but undercooked SVGAlib clone of Pacman which does have an RPM package on the disc but sadly had sound support disabled at compilation. There were a number of other Pacman clones featured, but this one had the most potential.
  21. "Intelligent FRAC". Ice Walkers. 2003-11-20. Retrieved 2023-09-29.
  22. "Impressing Your Friends with RPM". Official Red Hat Linux FAQ. Massachusetts Institute of Technology . Retrieved 2023-09-29.
  23. Heuser, Werner; Hampton, Wade W. (2003-02-27). "Games". Linux Ecology HOWTO. Retrieved 2023-09-29. lincity build & maintain a city/country. You are required to build and maintain a city. You must feed, house, provide jobs and goods for your residents. You can build a sustainable economy with the help of renewable energy and recycling, or you can go for broke and build rockets to escape from a pollution ridden and resource starved planet, it's up to you. Due to the finite resources available in any one place, this is not a game that you can leave for long periods of time. This game is similar to the commercial simulation game with a similar name. This package provides files common to both the X and SVGALIB versions of the game.
  24. Wilson, Hamish (2023-09-04). "Building a Retro Linux Gaming Computer Part 32: Two Steps Forward, One Step Back" . Retrieved 2023-09-29. As well as not being in keeping with the aesthetic, the LCD also had the annoying habit of showing a warning about being out of range on top of what otherwise looked to be a workable display, especially when playing games that utilized SVGAlib for graphics. I could get around this by launching certain more pliant SVGAlib games such as the final build of LinCity before starting up the offending applications, as for whatever reason this would seem to soothe the nerves of the display, but I was more than happy to leave those headaches behind.
  25. "Linberto". The Linux Game Tome. 2001-04-05. Retrieved 2023-09-29.
  26. "Qundra". Ice Walkers. 2012-02-26. Retrieved 2023-09-29.
  27. Marten, Jonathan (2015-12-08). "KRepton version 4" . Retrieved 2023-09-29. KRepton was originally written by Sandro Sigala for Linux using the SVGAlib library, and then rewritten entirely using the QT and KDE libraries for release 1.0 of KDE.
  28. Ayers, Larry (1998-07-01). "Sabre: An Svgalib Flight Sim". Linux Gazette . Retrieved 2023-09-29.
  29. Payne, Dennis (2021-09-20). "Open Game Source: Inertia Blast". Linkedin . Retrieved 2023-09-29. When I first installed Linux I stumbled on a remake of Thrust. It was brutally difficult but I enjoyed the game. At the time I ran it under svgalib, an old console graphic system which required root access.
  30. Van Os, Thom. "Software". Thom's Toys. Archived from the original on 2016-03-03. Retrieved 2023-12-18.
  31. "zblast-svgalib". Linux Mint . Retrieved 2023-09-29.
  32. "Index of /pub/Linux/games/video". ibiblio . Retrieved 2023-09-29.
  33. Weller, Michael. "svgalib(7) - Linux man page". die.net. Retrieved 2023-09-29.
  34. "Games". Official Red Hat Linux FAQ. Massachusetts Institute of Technology . Retrieved 2023-09-29.
  35. Pranevich, Joseph (1999-04-01). "Linux 2.2 and the Frame-Buffer Console Software". Linux Journal . Retrieved 2023-09-29. Limitations aside, SVGALib has proven to be a stable and popular solution to the console problem and is the primary interface used in Quake and other games.
  36. Wallis, Alistair (2008-05-26). "Bonus Interview: 'The State Of... Linux Gaming?'". Game Developer . Retrieved 2023-09-29. I've always been a video game nerd, so it was important to me to see how much gaming I could do on this new system. I remember how exciting it was to get Doom running fullscreen - [graphics library] svgalib was a monster that I'm sure nobody misses today. I was also quite taken by Maelstrom, a Linux port of a slick Asteroids clone for the Mac.
  37. timothy (2000-10-26). "Linux Graphics Programming with SVGAlib". Slashdot . Retrieved 2023-09-29.
  38. "SDL Sasteroids". The Linux Game Tome. 2005-04-01. Retrieved 2023-09-29. SDL Sasteroids is a major revision to the original sasteroids game to allow it to run on modern systems. In addition to providing very similar gameplay to the original sasteroids game, a few surprises and updates have been inserted to make it fun for new and old fans. :) Sasteroids was originally an Asteroids game written for svgalib.
  39. "FAQ: Using SDL". wiki.libsdl.org.
  40. Armstrong, Ryan (2020-11-18). "Old X Games". Zerk Zone. Retrieved 2023-09-29. That said, I will probably post info on SVGAlib games in the future, as they were a fascinating and forgotten stepping stone towards SDL.
  41. "Itetris 1.6.1/1.6.2 - Privileged Arbitrary Command Execution". Exploit Database. 2000-12-19. Retrieved 2023-09-29.
  42. Wilson, Hamish (2023-02-27). "Building a Retro Linux Gaming Computer - Part 27: Lost Souls". GamingOnLinux . Retrieved 2023-09-29.
  43. Zimbinski, Bob (1998-08-30). "Linux Quake HOWTO". 0.1.14. Retrieved 2023-09-29. Quake and QuakeWorld servers can be run by any user. The Quake clients, however, need access to your sound and graphics cards, which requires privileges that normal users don't have. One (bad) way to deal with this is to always run Quake as root. Responsible system administrators will cringe at this filthy suggestion. Making the Quake binaries setuid root is a more acceptable solution. Quake can then be run by regular users and still have the privileges it needs to access the sound and graphics devices. Setuid presents a security risk, though. A clever user could exploit a bug or security hole in Quake to gain root access to your system. Of course, if you don't run a multi-user system, this is may not be a big concern.