Porting MS-DOS Graphics Applications
By waiting for the VGA retrace, we are telling the program to wait until the monitor's electron beam reaches the bottom of the screen. Since there is a short pause before it jumps back to the top, it is a good moment to switch palettes without seeing “rainbow colors”. Thus, before switching palettes, we should wait for the VGA retrace as follows:
while (!(inportb(0x3da) & 8)); while ( (inportb(0x3da) & 8)); vga_waitretrace();
The following code assumes you have a character array of 768 values, representing the RGB values for 256 colors. For example:
char palette; where palette = R value of color 0; where palette = G value of color 0; where palette = B value of color 0; ... for (i = 0; i < 256; i++) vga_setpalette(i, palette[i*3], palette[i*3+1], palette[i*3+2]); outportb(0x3C8,0); for (i = 0; i < 768; i ++) outportb(0x3C9, palette[i]);
After adding SVGALIB code to the program, it's time to compile. Simply compile with the -lvga option to link the SVGALIB library. This library is preinstalled on most Linux systems; thus, if you experience problems linking it, you probably don't have it installed and should download it.
jaw3d was programmed by the author and is a Nullsoft Inc. product. Other cross-platform applications may be obtained at http://www.nullsoft.com/.
Jawed Karim is a freshman computer science student at the University of Illinois at Urbana-Champaign and works part-time at the National Center for Supercomputing Applications. His hobbies include programming and bicycle road racing. He can be reached at email@example.com.
- Integrating Trac, Jenkins and Cobbler—Customizing Linux Operating Systems for Organizational Needs
- Tech Tip: Really Simple HTTP Server with Python
- New Products
- Non-Linux FOSS: Remember Burning ISOs?
- EdgeRouter Lite
- Returning Values from Bash Functions
- RSS Feeds
- Raspberry Pi: the Perfect Home Server