Fastgraph FAQ
Fastgraph FAQ, last updated 10/23/94
Introduction:
Fastgraph is a programmer's graphics library commonly used for writing games,
but useful for a variety of graphics applications. Fastgraph was written by
Ted Gruber and is supported by Ted and Diana Gruber of Ted Gruber Software. It
is available through mail order from the Coriolis Group, which may be
contacted at: 1-800-410-0192; outside the U.S. call (602) 483-0192; the order
fax line is (602) 483-0193.
For information and technical support, please do not call the Coriolis Group.
Instead, contact Ted Gruber Software directly at:
Ted Gruber Software (702) 735-1980 (voice)
P.O. Box 13408 (702) 735-4603 (fax)
Las Vegas, NV 89112 (702) 796-7134 (BBS)
Email: fastgraph@aol.com or 72000.1642@compuserve.com
ftp: ftp@accessnv.com
Frequently asked questions:
Q. What is a graphics library?
A. A graphics library is a collection of general purpose functions which may
be linked into your program. The purpose of Fastgraph is to give you complete
control of the video environment, including initializing video memory,
manipulating it, displaying images on the screen, changing colors, and so on.
Q. What is the difference between a graphics library and a game engine?
A. Game engines are usually specific to a particular genre of game and provide
medium level functions such as collision detection. A graphics library is
general purpose low-level functions which can be used in many different kinds
of programs.
Q. How long has Fastgraph been around?
A. Ted started writing Fastgraph in 1987, and it has been under constant
construction ever since. Diana used Fastgraph to write her first game in 1987.
Q. How fast is Fastgraph?
A. It's fast.
Q. What games have been written with Fastgraph.
A. We do not have exact information on this, but the short answer is LOTS.
Many commercial and shareware games have been written with Fastgraph,
including arcade games, adventure games, puzzle games, card games, RPG's, and
so on. For some sample shareware games, call our bbs at (702) 796-7134 or
check our ftp site at ftp.accessnv.com.
Q. Are there any requirements for releasing a game with Fastgraph?
A. We only ask that you do not release public domain programs using Fastgraph.
Please copyright your software. Otherwise, there are no royalties or license
fees, and you are not required to mention that you used Fastgraph to write
your game (although we think it is nice if you do).
Q. What is the current version number?
A. We are currently shipping Fastgraph 4.0.
Q. How much does it cost?
A. Fastgraph 4.0 costs $249 with no royalties or license fees.
Q. Does that include source code?
A. No. Source code is extra. Call the TGS office for information about source
code pricing.
Q. How much does it cost to upgrade?
A. You can upgrade from 3.x to 4.0 for $69 plus shipping. That includes a new
manual (approximately 750 pages).
Q. What is Fastgraph/Fonts?
A. Fastgraph/Fonts is a Fastgraph add-on product providing 40 bitmapped fonts
and the code to display them, as well as a font editor and a conversion
program to use TrueType fonts with Fastgraph. The Fastgraph Font editor was
written by Steve Hodsdon.
Q. What is Fastgraph/Image?
A. Fastgraph/Image is a file resource manager. You can stuff lots of small
files into one binary file, sometimes referred to as a library file. It comes
with a library manager to conveniently add files to the resource file. The
resource file is indexed for quick access.
Q. Is Fastgraph required to use the Fonts and Image products?
A. Yes.
Q. What do the Fonts and Image products cost?
A. Fastgraph/Fonts costs $69 and Fastgraph/Image costs $69.
Q. Are there any package deals?
A. If you already have Fastgraph, you can buy the Fonts and Image products
together for $118. That saves you $20. If you want to buy all three products,
Fastgraph, Fastgraph/Fonts and Fastgraph/Image, we call that the Fastgraph
Power Pack and sell it for $359.
Q. What is Fastgraph/Light?
A. Fastgraph/Light is the shareware version of Fastgraph.
Q. What is the difference between Fastgraph/Light and Fastgraph?
A. The biggest difference is the TSR driver, called FGDRIVER.EXE, which must
be loaded into memory before any programs linked with Fastgraph/Light may be
run. Also, there are several functions missing from the Light version,
including the functions which require floating point (world space coordinates
and stroked character fonts) and the GIF functions, which were left out for
size reasons.
Q. Do Fastgraph/Light users get documentation and technical support?
A. The documentation is archived and distributed online (or on disk) with
Fastgraph/Light. Everybody gets technical support.
Q. What is Fastgraph/Help?
A. Fastgraph/Help is a hypertext help system that may be used as a standalone
program or a tsr. You may highlight Fastgraph functions in your code and press
a hotkey combination, and you will get an explanation of the function and
the parameters that are passed to it.
Q. Do you write that?
A. No. Mike Stephenson wrote it. We paid him for it and provide it to you for
free.
Q. Has anybody else helped write parts of Fastgraph?
A. Randy Dryburgh wrote parts of Fastgraph/Fonts. John Wagner wrote the
original Fastgraph/Image. Steve Hodson wrote the Fastgraph font editor and
the TrueType conversion program.
Q. What languages was Fastgraph written in?
A. All of Fastgraph is written in assembly language, except for the few
functions which expect floating point parameters. Those are written in the
language of the supported compiler.
Q. What languages does Fastgraph support?
A. Fastgraph supports C, Fortran, Basic, Pascal, and ASM. Some programmers
have found ways to use Fastgraph with other languages, such as FoxPro and
Turbo Prologue, but we do not guarantee support of those languages and cannot
offer technical support for them.
Q. What compilers does Fastgraph support?
A. Borland C++ (version 2.0 or later)
Borland Pascal (version 7.0 or later)
MetaWare High C/C++ (version 3.0 or later)
Microsoft BASIC PDS (version 7.0 or 7.1)
Microsoft C/C++ (version 5.1 or later)
Microsoft FORTRAN (version 4.0 or later)
Microsoft FORTRAN PowerStation (version 1.0 or later)
Microsoft QuickBASIC (version 4.0 or later)
Microsoft QuickC (version 2.0 or later)
Microsoft Visual Basic for DOS (version 1.0 or later)
Microsoft Visual C++ (version 1.0 or later)
Microsoft Visual C++ 32-bit Edition (version 1.0 or later)
Power C (version 2.0 or later)
Turbo C (version 2.0 or later)
Turbo C++ (version 1.0 or later)
Turbo Pascal (version 6.0 or later)
Watcom C/C++ (version 9.5 or later)
Watcom C32 for DOS (version 9.5 or later)
Zortech C++ (version 3.0 or later)
Q. What DOS extenders does Fastgraph support?
A. Borland PowerPack 16-bit and 32-bit
Phar Lap 286 and 386 (TNT)
Rational Systems DOS/16M and DOS/4G family
Q. What video modes does Fastgraph support?
A.
Mode No. of Supported Supported
No. Type Resolution Colors Adapters Displays
0 T 40 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
1 T 40 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
2 T 80 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
3 T 80 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
4 G 320 x 200 4 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
5 G 320 x 200 4 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
6 G 640 x 200 2/16 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
7 T 80 x 25 b/w MDA,HGC,EGA,VGA,SVGA Monochrome
9 G 320 x 200 16 Tandy 1000,PCjr RGB
11 G 720 x 348 b/w HGC Monochrome
12 G 320 x 200 b/w HGC Monochrome
13 G 320 x 200 16 EGA,VGA,SVGA RGB,ECD,VGA,SVGA
14 G 640 x 200 16 EGA,VGA,SVGA RGB,ECD,VGA,SVGA
15 G 640 x 350 b/w EGA,VGA,SVGA Mono,VGA,SVGA
16 G 640 x 350 16/64 EGA,VGA,SVGA ECD,VGA,SVGA
17 G 640 x 480 2/256K VGA,MCGA,SVGA VGA,SVGA
18 G 640 x 480 16/256K VGA,SVGA VGA,SVGA
19 G 320 x 200 256/256K VGA,MCGA,SVGA VGA,SVGA
20 G 320 x 200 256/256K VGA,SVGA VGA,SVGA
21 G 320 x 400 256/256K VGA,SVGA VGA,SVGA
22 G 320 x 240 256/256K VGA,SVGA VGA,SVGA
23 G 320 x 480 256/256K VGA,SVGA VGA,SVGA
24 G 640 x 400 256/256K SVGA SVGA
25 G 640 x 480 256/256K SVGA SVGA
26 G 800 x 600 256/256K SVGA SVGA
27 G 1024 x 768 256/256K SVGA SVGA
28 G 800 x 600 16/256K SVGA SVGA
29 G 1024 x 768 16/256K SVGA SVGA
Q. What SVGA chipsets does Fastgraph support?
A. Ahead "A" type
Ahead "B" type
ATI 18800
ATI 18800-1
ATI 28800
Chips & Technologies 82c451/455/456
Chips & Technologies 82C452
Chips & Technologies 82C453
Cirrus Logic 5400 series
Genoa 6000 series
Oak OTI-067
Paradise PVGA1a
Paradise WD90C00/WD90C10
Paradise WD90C11/WD90C30/WD90C31
S3
Trident 8800
Trident 8900
Trident 8900B/8900C/9000
Tseng ET3000
Tseng ET4000
Video7
VESA
Q. Are any chipsets problematic?
A. Some chipsets, notably those in laptops, sometimes fail the autodetection.
Since it is still possible to initialize those chipsets, we recommend you give
your users some kind of manual override if the autodetection fails.
Q. Are any video cards problematic?
A. We've found problems supporting the Diamond Viper card (and so have other
programmers). At this time, this video card is supported through VESA only.
Q. What file formats does Fastgraph support?
A. Fastgraph supports reading and writing PCX, GIF, and RLE files, and you can
read (display) Autodesk Animator FLI/FLC files.
Q. Are you going to do a Windows version of Fastgraph?
A. Probably some day. We are looking into it.
Q. Does Fastgraph support sound cards?
A. No. You need a sound and music library for that, such as the WORX toolkit
from Mystic Software, the Sound Operating System by HMI, or Digpak/Midpak by
the Audio Solution.
Q. Does Fastgraph support horizontal scrolling?
A. Not directly, but there is a way to do it. For an explanation, see Diana's
book, Action Arcade Adventure Set, published by the Coriolis Group.
Q. Are Ted and Diana related?
A. They are married.
Q. How come when I leave Ted email on CompuServe or the Internet, Diana
answers it?
A. Ted is "modem impaired".
Q. Can you tell me a little more about that A.A.A.S. book?
A. The book documents a game engine for a side-scroller game. It includes
the various editors including a level editor, sprite editor and palette
manager, as well as code for smooth scrolling and sprite animation.
Q. Is there a Fastgraph FTP site?
A. Yes. You can get Fastgraph files, including the shareware version, the
documentation, and lots of examples and code from ftp.accessnv.com.
Q. So, briefly, what functions are in Fastgraph?
A. See the Summary of Fastgraph Functions below.
Summary of Fastgraph Functions
------------------------------
Video initialization
--------------------
fg_automode determine which available video mode offers the highest
resolution and number of colors
fg_bestmode choose the best video mode given resolution and video page
requirements
fg_cursor turn the text mode cursor on or off
fg_egacheck return information about the active EGA or VGA adapter and
display
fg_getlines get the number of text rows per video page
fg_getmode return the current video mode number
fg_initpm initialize Fastgraph's protected mode kernel
fg_reset erase the screen, restoring screen attributes if ANSI.SYS is
loaded
fg_setlines in EGA/VGA/SVGA text modes, establish 25, 43, or 50 line mode
fg_setmode establish a video mode and initialize Fastgraph
fg_svgainit autodetect the SVGA chipset (or VESA) and initialize
Fastgraph's SVGA kernel
fg_testmode determine whether or not a video mode is available on the
system
Coordinate systems
------------------
fg_getmaxx get the maximum x coordinate in screen space
fg_getmaxy get the maximum y coordinate in screen space
fg_getview return current viewport extremes
fg_getworld determine the current limits of the world space coordinate
system
fg_initw initialize the world space coordinate system
fg_setview define viewport extremes and position
fg_setworld define the floating point world space coordinate system
fg_xalpha translate screen space x coordinate to character space column
fg_xconvert translate character space column to screen space x coordinate
fg_xscreen translate world space x coordinate to screen space x coordinate
fg_xview translate horizontal viewport coordinate to screen space
fg_xworld translate screen space x coordinate to world space x coordinate
fg_yalpha translate screen space y coordinate to character space row
fg_yconvert translate character space row to screen space y coordinate
fg_yscreen translate world space y coordinate to screen space y coordinate
fg_yview translate vertical viewport coordinate to screen space
fg_yworld translate screen space y coordinate to world space y coordinate
Colors and palettes
-------------------
fg_colors return number of colors available in the current video mode
fg_defcolor assign a color value to a virtual color index
fg_getcolor get the current color index (graphics modes) or display
attributes (text modes)
fg_getdacs get the RGB components of a block of DAC registers
fg_getindex get the color value assigned to a virtual color index
fg_getrgb get the RGB components of a specified DAC register
fg_maprgb map six-bit RGB components to a 16-color palette value
fg_palette assign a color value to a palette
fg_palettes define 16 palette register values
fg_setattr establish display attributes in text modes
fg_setcolor establish the current color index
fg_setdacs specify RGB components of a block of DAC registers
fg_setrgb define the RGB value of a palette or video DAC register
Graphics fundamentals
---------------------
fg_box draw a hollow rectangle
fg_boxdepth specify the outline size of a hollow rectangle
fg_boxw draw a hollow rectangle in world space
fg_boxx draw a hollow rectangle in XOR mode
fg_boxxw draw a hollow rectangle in XOR mode in world space
fg_circle draw a hollow circle
fg_circlef draw a filled circle
fg_circlefw draw a filled circle in world space
fg_circlew draw a hollow circle in world space
fg_clprect draw a clipped rectangle
fg_clprectw draw a clipped rectangle in world space
fg_dash draw a dashed line
fg_dashrel draw a dashed line relative to current position
fg_dashrw draw a relative dashed line in world space
fg_dashw draw a dashed line in world space
fg_draw draw a line
fg_drawrel draw a line relative to the current position
fg_drawrelx draw a relative XOR line
fg_drawrw draw a relative line in world space
fg_drawrxw draw a relative XOR line in world space
fg_draww draw a line in world space
fg_drawx draw an XOR line
fg_drawxw draw an XOR line in world space
fg_drect draw a dithered rectangle
fg_drectw draw a dithered rectangle in world space
fg_ellipse draw an ellipse
fg_ellipsef draw a filled ellipse
fg_ellipsew draw an ellipse in world space
fg_ellipsfw draw a filled ellipse in world space
fg_erase clear the active video page
fg_fillpage fill active video page with current color
fg_flood like fg_paint but observes the clipping limits
fg_floodw like fg_paintw but observes the clipping limits
fg_getclip return current clipping limits
fg_getpixel get the color value of specified pixel
fg_getxbox return fg_box left and right edge width
fg_getxpos get screen space x coordinate of graphics cursor
fg_getybox return fg_box top and bottom edge width
fg_getypos get the screen space y coordinate of graphics cursor
fg_inside check if a specified point is inside a convex polygon
fg_move position the graphics cursor
fg_moverel position the graphics cursor relative to current position
fg_moverw position the graphics cursor, relative, in world space
fg_movew position the graphics cursor in world space
fg_paint fast flood fill of any closed area, including an area with
holes
fg_paintw world space version of fg_paint
fg_point draw a point
fg_pointw draw a point in world space
fg_pointx draw a point in XOR mode
fg_pointxw draw a point in XOR mode in world space
fg_polyedge specify fg_polyfill right and bottom edge inclusion
fg_polyfill draw a filled convex polygon
fg_polygon draw an unfilled polygon
fg_polygonw draw an unfilled polygon in world space
fg_polyline draw an unfilled polygon from one vertex array
fg_polyoff define polygon offsets for fg_polyfill and fg_polyline
fg_rect draw a solid rectangle in screen space or character space
fg_rectw draw a solid rectangle in world space
fg_setclip establish limits of clipping region for primitives and
bitmapped images
fg_setclipw world space version of fg_setclip
Character display
-----------------
fg_chgattr change display attribute for existing text in text modes
fg_chgtext change text while preserving the display attributes in text
modes
fg_fontsize enable 8x8, 8x14, or 8x16 ROM font (VGA/SVGA only)
fg_getattr get the display attribute of a given character cell in text
modes
fg_getchar get the character value of a given character cell in text
modes
fg_getxjust return fg_print and fg_printc horizontal justification setting
fg_getyjust return fg_print and fg_printc vertical justification setting
fg_justify define justification settings for fg_print
fg_locate define row and column for character display
fg_print display hardware characters in screen space
fg_printc version of fg_print that performs clipping
fg_setangle define the orientation of software (stroked) characters
fg_setratio define the aspect ratio for software characters
fg_setsize define the height of software characters in screen space
fg_setsizew define the height of software characters in world space
fg_swchar display software (stroked) characters
fg_swlength compute the length of a string of software characters
fg_swtext display software characters
fg_text display hardware (ROM font) characters
fg_textc version of fg_text that supports clipping
fg_where return the text cursor position
Video page management
---------------------
fg_allocate create a virtual page in conventional memory
fg_alloccms create a logical page in conventional memory
fg_allocems create a logical page in expanded memory
fg_allocxms create a logical page in extended memory
fg_findpage find an available page number for virtual/logical pages
fg_freepage release a virtual or logical page
fg_getaddr get the segment address of the active video page
fg_getentry get address and type of a physical, virtual or logical page
fg_getpage get the active video page number
fg_getvpage get the number of the visual video page
fg_initems initialize expanded memory (EMS)
fg_initxms initialize extended memory (XMS)
fg_pagesize return video page size in bytes
fg_resize change the size of a video page (use with fg_pan)
fg_setentry set address and type of a physical, virtual or logical page
fg_setpage establish the active video page
fg_setvpage establish the visual video page
Virtual buffer management
-------------------------
fg_vbaddr return address of a virtual buffer
fg_vballoc create a virtual buffer (allocate memory internally)
fg_vbclose close the active virtual buffer
fg_vbcopy copy rectangular region from one virtual buffer to another
fg_vbcut copy rectangular region from active video page to virtual buffer
fg_vbdefine create a virtual buffer (from previously allocated memory)
fg_vbfree release virtual buffer memory allocated with fg_vballoc
fg_vbhandle return handle of the active virtual buffer
fg_vbinit initialize Fastgraph's virtual buffer environment
fg_vbopen make an existing virtual buffer the active virtual buffer
fg_vbpaste copy rectangular region from virtual buffer to active video page
fg_vbtcxfer version of fg_vbpaste that supports transparent colors
fg_vbundef release a virtual buffer handle
Bitmapped image management
--------------------------
fg_clipmap version of fg_drawmap that performs clipping
fg_clipmask draw a clipped masking map
fg_clpimage draw a clipped mode-specific bitmap
fg_display display a pixel run map
fg_displayp display a packed pixel run map
fg_drawmap draw a mode-independent bitmap
fg_drawmask draw a masking map
fg_drwimage draw a lightning-fast mode-specific bitmap
fg_flipmask draw an inverted masking map
fg_flpimage draw an inverted mode-specific bitmap
fg_getimage retrieve an image as a mode-specific bitmap
fg_getmap retrieve an image as a mode-independent bitmap
fg_imagesiz calculate the number of bytes required for mode-specific
bitmap storage
fg_invert invert orientation of a bitmapped image array
fg_pack translate "one pixel per byte" bitmap to mode-specific format
fg_putimage like fg_drwimage but doesn't check for transparent pixels
fg_revimage display a reversed mode-specific bitmap
fg_revmask display a reversed masking map
fg_scale scale a bitmapped image
fg_shear shear a bitmapped image
fg_unpack translate mode-specific bitmap to "one pixel per byte" format
Image file routines
-------------------
fg_dispfile display a pixel run file, packed or unpacked
fg_flicdone close an FLI or FLC file
fg_flichead read an FLI or FLC file header
fg_flicmode determine optimal video mode for an FLI or FLC file
fg_flicopen open an FLI or FLC file
fg_flicplay play one or more frames from an FLI or FLC file
fg_flicsize return FLI or FLC image dimensions
fg_flicskip advance one or more frames in an FLI or FLC file
fg_gifhead read a GIF file global header and first local header
fg_gifmode determine optimal video mode for a GIF file
fg_gifpal retrieve palette information from a GIF file
fg_gifrange return GIF image dimensions
fg_imagebuf define the address and size of the image file buffer
fg_loadpcx load a PCX image into a virtual buffer
fg_makegif create a GIF file from a rectangular region of the active
video page
fg_makepcx create a PCX file from a rectangular region of the active
video page
fg_makeppr create a PPR file from a rectangular region of the active
video page
fg_makespr create an SPR file from a rectangular region of the active
video page
fg_pattern define dither patterns for pixel run maps
fg_pcxhead read a PCX file header into a 128-byte buffer
fg_pcxmode determine the optimal mode for displaying a PCX file
fg_pcxpal retrieve palette information from a PCX file
fg_pcxrange return PCX image dimensions
fg_showflic play an FLI or FLC file
fg_showgif display a GIF file
fg_showpcx display a PCX file
fg_showppr display a packed pixel run (PPR) file
fg_showspr display a standard pixel run (SPR) file (RLE)
Block transfer routines
-----------------------
fg_copypage copy an entire physical, virtual, or logical page
fg_getblock transfer rectangular region from video memory to RAM
fg_gethpage get the number of the current "hidden" video page
fg_putblock transfer rectangular region from RAM to video memory
fg_restore fast rectangular area copy from hidden to visual page
fg_restorew world space version of fg_restore
fg_save fast rectangular area copy from visual to hidden page
fg_savew world space version of fg_save
fg_sethpage establish the hidden video page
fg_tcdefine define transparent color number for fg_tcxfer
fg_tcmask define transparent colors for fg_tcxfer
fg_tcxfer transfer rectangular area with transparent colors
fg_transfer fast rectangular region copy from any page to any page
(bitblt)
Special effects
---------------
fg_fadein copy hidden to visual page in small, random increments
fg_fadeout erase the visual page in small, random increments
fg_pan change the screen origin for full-screen four-directional
smooth scrolling
fg_panw world space version of fg_pan
fg_scroll smooth vertical scrolling of rectangular area
fg_split enable or disable a split screen environment
Keyboard control
----------------
fg_capslock turn the CapsLock key on or off
fg_getkey wait for a keystroke or retrieve the next value from the
keystroke buffer
fg_intkey get the next entry from BIOS keyboard buffer if it is not
empty
fg_kbinit enable or disable the low-level keyboard handler
fg_kblast return scan code of most recent keypress
fg_kbreset reset Fastgraph's low-level keyboard handler
fg_kbtest determine if a key is now pressed or released
fg_numlock get the state of the NumLock key
fg_scrlock get the state of the ScrollLock key
fg_setcaps turn the CapsLock key on or off
fg_setnum turn the NumLock key on or off
fg_waitkey wait for any keystroke
Mouse management
----------------
fg_mouse256 define 256-color mouse cursor
fg_mousebut get information about the mouse - were buttons pressed, and
where?
fg_mousecur define the appearance of the mouse cursor in text modes
fg_mousefin unhook Fastgraph's XVGA or SVGA mouse handler
fg_mouseini initialize the mouse
fg_mouselim define limits the mouse movement
fg_mousemov position the mouse cursor
fg_mousepos get the current mouse position and button status
fg_mouseptr define shape and appearance of mouse cursor in graphics modes
fg_mousespd control the speed of mouse cursor relative to the speed of
the mouse
fg_mousevis make the mouse cursor visible or invisible
Joystick support
----------------
fg_button get a joystick's button status
fg_getxjoy get the horizontal position of the specified joystick
fg_getyjoy get the vertical position of the specified joystick
fg_initjoy initialize either joystick
fg_intjoy return keyboard codes analogous to joystick position and
button status
Sound effects and music
-----------------------
fg_hush immediately stop any asynchronous sound or music
fg_hushnext stop asynchronous sound or music after the current iteration
fg_music play a sequence of musical notes
fg_musicb play asynchronous music (background music)
fg_playing determine whether there is any asynchronous sound in progress
fg_quiet stop continuous sound
fg_resume after suspending asynchronous music, continue the music
fg_sound produce a tone of specified frequency and duration
fg_sounds play a series of tones, concurrent with other activity
fg_suspend suspend asynchronous sound (see fg_resume)
fg_voice produce sound on TI sound chip (as in Tandy 1000)
fg_voices play a series of tones on TI sound chip, concurrent with
other activity
Timing
------
fg_getclock get the number of clock ticks since midnight
fg_measure benchmark the system speed to determine delay units for
fg_stall
fg_stall stall for a given number of delay units (see fg_measure)
fg_waitfor delay a specified number of clock ticks (18.2 per second)
Miscellaneous
-------------
fg_getbanks return current SVGA read and write bank numbers
fg_memavail determine the amount of conventional memory available to DOS
fg_memory return the amount of video memory present in kilobytes
fg_setbanks define SVGA read and write bank numbers
fg_setfunc specify the logical operation in EGA/VGA modes (for XORing,
etc.)
fg_svgaver return Fastgraph SVGA kernel version number
fg_version return Fastgraph version number
fg_vgastate save or restore the internal VGA state
fg_waitvr specify if functions wait internally for vertical retrace
Introduction:
Fastgraph is a programmer's graphics library commonly used for writing games,
but useful for a variety of graphics applications. Fastgraph was written by
Ted Gruber and is supported by Ted and Diana Gruber of Ted Gruber Software. It
is available through mail order from the Coriolis Group, which may be
contacted at: 1-800-410-0192; outside the U.S. call (602) 483-0192; the order
fax line is (602) 483-0193.
For information and technical support, please do not call the Coriolis Group.
Instead, contact Ted Gruber Software directly at:
Ted Gruber Software (702) 735-1980 (voice)
P.O. Box 13408 (702) 735-4603 (fax)
Las Vegas, NV 89112 (702) 796-7134 (BBS)
Email: fastgraph@aol.com or 72000.1642@compuserve.com
ftp: ftp@accessnv.com
Frequently asked questions:
Q. What is a graphics library?
A. A graphics library is a collection of general purpose functions which may
be linked into your program. The purpose of Fastgraph is to give you complete
control of the video environment, including initializing video memory,
manipulating it, displaying images on the screen, changing colors, and so on.
Q. What is the difference between a graphics library and a game engine?
A. Game engines are usually specific to a particular genre of game and provide
medium level functions such as collision detection. A graphics library is
general purpose low-level functions which can be used in many different kinds
of programs.
Q. How long has Fastgraph been around?
A. Ted started writing Fastgraph in 1987, and it has been under constant
construction ever since. Diana used Fastgraph to write her first game in 1987.
Q. How fast is Fastgraph?
A. It's fast.
Q. What games have been written with Fastgraph.
A. We do not have exact information on this, but the short answer is LOTS.
Many commercial and shareware games have been written with Fastgraph,
including arcade games, adventure games, puzzle games, card games, RPG's, and
so on. For some sample shareware games, call our bbs at (702) 796-7134 or
check our ftp site at ftp.accessnv.com.
Q. Are there any requirements for releasing a game with Fastgraph?
A. We only ask that you do not release public domain programs using Fastgraph.
Please copyright your software. Otherwise, there are no royalties or license
fees, and you are not required to mention that you used Fastgraph to write
your game (although we think it is nice if you do).
Q. What is the current version number?
A. We are currently shipping Fastgraph 4.0.
Q. How much does it cost?
A. Fastgraph 4.0 costs $249 with no royalties or license fees.
Q. Does that include source code?
A. No. Source code is extra. Call the TGS office for information about source
code pricing.
Q. How much does it cost to upgrade?
A. You can upgrade from 3.x to 4.0 for $69 plus shipping. That includes a new
manual (approximately 750 pages).
Q. What is Fastgraph/Fonts?
A. Fastgraph/Fonts is a Fastgraph add-on product providing 40 bitmapped fonts
and the code to display them, as well as a font editor and a conversion
program to use TrueType fonts with Fastgraph. The Fastgraph Font editor was
written by Steve Hodsdon.
Q. What is Fastgraph/Image?
A. Fastgraph/Image is a file resource manager. You can stuff lots of small
files into one binary file, sometimes referred to as a library file. It comes
with a library manager to conveniently add files to the resource file. The
resource file is indexed for quick access.
Q. Is Fastgraph required to use the Fonts and Image products?
A. Yes.
Q. What do the Fonts and Image products cost?
A. Fastgraph/Fonts costs $69 and Fastgraph/Image costs $69.
Q. Are there any package deals?
A. If you already have Fastgraph, you can buy the Fonts and Image products
together for $118. That saves you $20. If you want to buy all three products,
Fastgraph, Fastgraph/Fonts and Fastgraph/Image, we call that the Fastgraph
Power Pack and sell it for $359.
Q. What is Fastgraph/Light?
A. Fastgraph/Light is the shareware version of Fastgraph.
Q. What is the difference between Fastgraph/Light and Fastgraph?
A. The biggest difference is the TSR driver, called FGDRIVER.EXE, which must
be loaded into memory before any programs linked with Fastgraph/Light may be
run. Also, there are several functions missing from the Light version,
including the functions which require floating point (world space coordinates
and stroked character fonts) and the GIF functions, which were left out for
size reasons.
Q. Do Fastgraph/Light users get documentation and technical support?
A. The documentation is archived and distributed online (or on disk) with
Fastgraph/Light. Everybody gets technical support.
Q. What is Fastgraph/Help?
A. Fastgraph/Help is a hypertext help system that may be used as a standalone
program or a tsr. You may highlight Fastgraph functions in your code and press
a hotkey combination, and you will get an explanation of the function and
the parameters that are passed to it.
Q. Do you write that?
A. No. Mike Stephenson wrote it. We paid him for it and provide it to you for
free.
Q. Has anybody else helped write parts of Fastgraph?
A. Randy Dryburgh wrote parts of Fastgraph/Fonts. John Wagner wrote the
original Fastgraph/Image. Steve Hodson wrote the Fastgraph font editor and
the TrueType conversion program.
Q. What languages was Fastgraph written in?
A. All of Fastgraph is written in assembly language, except for the few
functions which expect floating point parameters. Those are written in the
language of the supported compiler.
Q. What languages does Fastgraph support?
A. Fastgraph supports C, Fortran, Basic, Pascal, and ASM. Some programmers
have found ways to use Fastgraph with other languages, such as FoxPro and
Turbo Prologue, but we do not guarantee support of those languages and cannot
offer technical support for them.
Q. What compilers does Fastgraph support?
A. Borland C++ (version 2.0 or later)
Borland Pascal (version 7.0 or later)
MetaWare High C/C++ (version 3.0 or later)
Microsoft BASIC PDS (version 7.0 or 7.1)
Microsoft C/C++ (version 5.1 or later)
Microsoft FORTRAN (version 4.0 or later)
Microsoft FORTRAN PowerStation (version 1.0 or later)
Microsoft QuickBASIC (version 4.0 or later)
Microsoft QuickC (version 2.0 or later)
Microsoft Visual Basic for DOS (version 1.0 or later)
Microsoft Visual C++ (version 1.0 or later)
Microsoft Visual C++ 32-bit Edition (version 1.0 or later)
Power C (version 2.0 or later)
Turbo C (version 2.0 or later)
Turbo C++ (version 1.0 or later)
Turbo Pascal (version 6.0 or later)
Watcom C/C++ (version 9.5 or later)
Watcom C32 for DOS (version 9.5 or later)
Zortech C++ (version 3.0 or later)
Q. What DOS extenders does Fastgraph support?
A. Borland PowerPack 16-bit and 32-bit
Phar Lap 286 and 386 (TNT)
Rational Systems DOS/16M and DOS/4G family
Q. What video modes does Fastgraph support?
A.
Mode No. of Supported Supported
No. Type Resolution Colors Adapters Displays
0 T 40 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
1 T 40 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
2 T 80 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
3 T 80 x 25 16/8 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
4 G 320 x 200 4 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
5 G 320 x 200 4 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
6 G 640 x 200 2/16 CGA,EGA,VGA,MCGA,SVGA RGB,ECD,VGA,SVGA
7 T 80 x 25 b/w MDA,HGC,EGA,VGA,SVGA Monochrome
9 G 320 x 200 16 Tandy 1000,PCjr RGB
11 G 720 x 348 b/w HGC Monochrome
12 G 320 x 200 b/w HGC Monochrome
13 G 320 x 200 16 EGA,VGA,SVGA RGB,ECD,VGA,SVGA
14 G 640 x 200 16 EGA,VGA,SVGA RGB,ECD,VGA,SVGA
15 G 640 x 350 b/w EGA,VGA,SVGA Mono,VGA,SVGA
16 G 640 x 350 16/64 EGA,VGA,SVGA ECD,VGA,SVGA
17 G 640 x 480 2/256K VGA,MCGA,SVGA VGA,SVGA
18 G 640 x 480 16/256K VGA,SVGA VGA,SVGA
19 G 320 x 200 256/256K VGA,MCGA,SVGA VGA,SVGA
20 G 320 x 200 256/256K VGA,SVGA VGA,SVGA
21 G 320 x 400 256/256K VGA,SVGA VGA,SVGA
22 G 320 x 240 256/256K VGA,SVGA VGA,SVGA
23 G 320 x 480 256/256K VGA,SVGA VGA,SVGA
24 G 640 x 400 256/256K SVGA SVGA
25 G 640 x 480 256/256K SVGA SVGA
26 G 800 x 600 256/256K SVGA SVGA
27 G 1024 x 768 256/256K SVGA SVGA
28 G 800 x 600 16/256K SVGA SVGA
29 G 1024 x 768 16/256K SVGA SVGA
Q. What SVGA chipsets does Fastgraph support?
A. Ahead "A" type
Ahead "B" type
ATI 18800
ATI 18800-1
ATI 28800
Chips & Technologies 82c451/455/456
Chips & Technologies 82C452
Chips & Technologies 82C453
Cirrus Logic 5400 series
Genoa 6000 series
Oak OTI-067
Paradise PVGA1a
Paradise WD90C00/WD90C10
Paradise WD90C11/WD90C30/WD90C31
S3
Trident 8800
Trident 8900
Trident 8900B/8900C/9000
Tseng ET3000
Tseng ET4000
Video7
VESA
Q. Are any chipsets problematic?
A. Some chipsets, notably those in laptops, sometimes fail the autodetection.
Since it is still possible to initialize those chipsets, we recommend you give
your users some kind of manual override if the autodetection fails.
Q. Are any video cards problematic?
A. We've found problems supporting the Diamond Viper card (and so have other
programmers). At this time, this video card is supported through VESA only.
Q. What file formats does Fastgraph support?
A. Fastgraph supports reading and writing PCX, GIF, and RLE files, and you can
read (display) Autodesk Animator FLI/FLC files.
Q. Are you going to do a Windows version of Fastgraph?
A. Probably some day. We are looking into it.
Q. Does Fastgraph support sound cards?
A. No. You need a sound and music library for that, such as the WORX toolkit
from Mystic Software, the Sound Operating System by HMI, or Digpak/Midpak by
the Audio Solution.
Q. Does Fastgraph support horizontal scrolling?
A. Not directly, but there is a way to do it. For an explanation, see Diana's
book, Action Arcade Adventure Set, published by the Coriolis Group.
Q. Are Ted and Diana related?
A. They are married.
Q. How come when I leave Ted email on CompuServe or the Internet, Diana
answers it?
A. Ted is "modem impaired".
Q. Can you tell me a little more about that A.A.A.S. book?
A. The book documents a game engine for a side-scroller game. It includes
the various editors including a level editor, sprite editor and palette
manager, as well as code for smooth scrolling and sprite animation.
Q. Is there a Fastgraph FTP site?
A. Yes. You can get Fastgraph files, including the shareware version, the
documentation, and lots of examples and code from ftp.accessnv.com.
Q. So, briefly, what functions are in Fastgraph?
A. See the Summary of Fastgraph Functions below.
Summary of Fastgraph Functions
------------------------------
Video initialization
--------------------
fg_automode determine which available video mode offers the highest
resolution and number of colors
fg_bestmode choose the best video mode given resolution and video page
requirements
fg_cursor turn the text mode cursor on or off
fg_egacheck return information about the active EGA or VGA adapter and
display
fg_getlines get the number of text rows per video page
fg_getmode return the current video mode number
fg_initpm initialize Fastgraph's protected mode kernel
fg_reset erase the screen, restoring screen attributes if ANSI.SYS is
loaded
fg_setlines in EGA/VGA/SVGA text modes, establish 25, 43, or 50 line mode
fg_setmode establish a video mode and initialize Fastgraph
fg_svgainit autodetect the SVGA chipset (or VESA) and initialize
Fastgraph's SVGA kernel
fg_testmode determine whether or not a video mode is available on the
system
Coordinate systems
------------------
fg_getmaxx get the maximum x coordinate in screen space
fg_getmaxy get the maximum y coordinate in screen space
fg_getview return current viewport extremes
fg_getworld determine the current limits of the world space coordinate
system
fg_initw initialize the world space coordinate system
fg_setview define viewport extremes and position
fg_setworld define the floating point world space coordinate system
fg_xalpha translate screen space x coordinate to character space column
fg_xconvert translate character space column to screen space x coordinate
fg_xscreen translate world space x coordinate to screen space x coordinate
fg_xview translate horizontal viewport coordinate to screen space
fg_xworld translate screen space x coordinate to world space x coordinate
fg_yalpha translate screen space y coordinate to character space row
fg_yconvert translate character space row to screen space y coordinate
fg_yscreen translate world space y coordinate to screen space y coordinate
fg_yview translate vertical viewport coordinate to screen space
fg_yworld translate screen space y coordinate to world space y coordinate
Colors and palettes
-------------------
fg_colors return number of colors available in the current video mode
fg_defcolor assign a color value to a virtual color index
fg_getcolor get the current color index (graphics modes) or display
attributes (text modes)
fg_getdacs get the RGB components of a block of DAC registers
fg_getindex get the color value assigned to a virtual color index
fg_getrgb get the RGB components of a specified DAC register
fg_maprgb map six-bit RGB components to a 16-color palette value
fg_palette assign a color value to a palette
fg_palettes define 16 palette register values
fg_setattr establish display attributes in text modes
fg_setcolor establish the current color index
fg_setdacs specify RGB components of a block of DAC registers
fg_setrgb define the RGB value of a palette or video DAC register
Graphics fundamentals
---------------------
fg_box draw a hollow rectangle
fg_boxdepth specify the outline size of a hollow rectangle
fg_boxw draw a hollow rectangle in world space
fg_boxx draw a hollow rectangle in XOR mode
fg_boxxw draw a hollow rectangle in XOR mode in world space
fg_circle draw a hollow circle
fg_circlef draw a filled circle
fg_circlefw draw a filled circle in world space
fg_circlew draw a hollow circle in world space
fg_clprect draw a clipped rectangle
fg_clprectw draw a clipped rectangle in world space
fg_dash draw a dashed line
fg_dashrel draw a dashed line relative to current position
fg_dashrw draw a relative dashed line in world space
fg_dashw draw a dashed line in world space
fg_draw draw a line
fg_drawrel draw a line relative to the current position
fg_drawrelx draw a relative XOR line
fg_drawrw draw a relative line in world space
fg_drawrxw draw a relative XOR line in world space
fg_draww draw a line in world space
fg_drawx draw an XOR line
fg_drawxw draw an XOR line in world space
fg_drect draw a dithered rectangle
fg_drectw draw a dithered rectangle in world space
fg_ellipse draw an ellipse
fg_ellipsef draw a filled ellipse
fg_ellipsew draw an ellipse in world space
fg_ellipsfw draw a filled ellipse in world space
fg_erase clear the active video page
fg_fillpage fill active video page with current color
fg_flood like fg_paint but observes the clipping limits
fg_floodw like fg_paintw but observes the clipping limits
fg_getclip return current clipping limits
fg_getpixel get the color value of specified pixel
fg_getxbox return fg_box left and right edge width
fg_getxpos get screen space x coordinate of graphics cursor
fg_getybox return fg_box top and bottom edge width
fg_getypos get the screen space y coordinate of graphics cursor
fg_inside check if a specified point is inside a convex polygon
fg_move position the graphics cursor
fg_moverel position the graphics cursor relative to current position
fg_moverw position the graphics cursor, relative, in world space
fg_movew position the graphics cursor in world space
fg_paint fast flood fill of any closed area, including an area with
holes
fg_paintw world space version of fg_paint
fg_point draw a point
fg_pointw draw a point in world space
fg_pointx draw a point in XOR mode
fg_pointxw draw a point in XOR mode in world space
fg_polyedge specify fg_polyfill right and bottom edge inclusion
fg_polyfill draw a filled convex polygon
fg_polygon draw an unfilled polygon
fg_polygonw draw an unfilled polygon in world space
fg_polyline draw an unfilled polygon from one vertex array
fg_polyoff define polygon offsets for fg_polyfill and fg_polyline
fg_rect draw a solid rectangle in screen space or character space
fg_rectw draw a solid rectangle in world space
fg_setclip establish limits of clipping region for primitives and
bitmapped images
fg_setclipw world space version of fg_setclip
Character display
-----------------
fg_chgattr change display attribute for existing text in text modes
fg_chgtext change text while preserving the display attributes in text
modes
fg_fontsize enable 8x8, 8x14, or 8x16 ROM font (VGA/SVGA only)
fg_getattr get the display attribute of a given character cell in text
modes
fg_getchar get the character value of a given character cell in text
modes
fg_getxjust return fg_print and fg_printc horizontal justification setting
fg_getyjust return fg_print and fg_printc vertical justification setting
fg_justify define justification settings for fg_print
fg_locate define row and column for character display
fg_print display hardware characters in screen space
fg_printc version of fg_print that performs clipping
fg_setangle define the orientation of software (stroked) characters
fg_setratio define the aspect ratio for software characters
fg_setsize define the height of software characters in screen space
fg_setsizew define the height of software characters in world space
fg_swchar display software (stroked) characters
fg_swlength compute the length of a string of software characters
fg_swtext display software characters
fg_text display hardware (ROM font) characters
fg_textc version of fg_text that supports clipping
fg_where return the text cursor position
Video page management
---------------------
fg_allocate create a virtual page in conventional memory
fg_alloccms create a logical page in conventional memory
fg_allocems create a logical page in expanded memory
fg_allocxms create a logical page in extended memory
fg_findpage find an available page number for virtual/logical pages
fg_freepage release a virtual or logical page
fg_getaddr get the segment address of the active video page
fg_getentry get address and type of a physical, virtual or logical page
fg_getpage get the active video page number
fg_getvpage get the number of the visual video page
fg_initems initialize expanded memory (EMS)
fg_initxms initialize extended memory (XMS)
fg_pagesize return video page size in bytes
fg_resize change the size of a video page (use with fg_pan)
fg_setentry set address and type of a physical, virtual or logical page
fg_setpage establish the active video page
fg_setvpage establish the visual video page
Virtual buffer management
-------------------------
fg_vbaddr return address of a virtual buffer
fg_vballoc create a virtual buffer (allocate memory internally)
fg_vbclose close the active virtual buffer
fg_vbcopy copy rectangular region from one virtual buffer to another
fg_vbcut copy rectangular region from active video page to virtual buffer
fg_vbdefine create a virtual buffer (from previously allocated memory)
fg_vbfree release virtual buffer memory allocated with fg_vballoc
fg_vbhandle return handle of the active virtual buffer
fg_vbinit initialize Fastgraph's virtual buffer environment
fg_vbopen make an existing virtual buffer the active virtual buffer
fg_vbpaste copy rectangular region from virtual buffer to active video page
fg_vbtcxfer version of fg_vbpaste that supports transparent colors
fg_vbundef release a virtual buffer handle
Bitmapped image management
--------------------------
fg_clipmap version of fg_drawmap that performs clipping
fg_clipmask draw a clipped masking map
fg_clpimage draw a clipped mode-specific bitmap
fg_display display a pixel run map
fg_displayp display a packed pixel run map
fg_drawmap draw a mode-independent bitmap
fg_drawmask draw a masking map
fg_drwimage draw a lightning-fast mode-specific bitmap
fg_flipmask draw an inverted masking map
fg_flpimage draw an inverted mode-specific bitmap
fg_getimage retrieve an image as a mode-specific bitmap
fg_getmap retrieve an image as a mode-independent bitmap
fg_imagesiz calculate the number of bytes required for mode-specific
bitmap storage
fg_invert invert orientation of a bitmapped image array
fg_pack translate "one pixel per byte" bitmap to mode-specific format
fg_putimage like fg_drwimage but doesn't check for transparent pixels
fg_revimage display a reversed mode-specific bitmap
fg_revmask display a reversed masking map
fg_scale scale a bitmapped image
fg_shear shear a bitmapped image
fg_unpack translate mode-specific bitmap to "one pixel per byte" format
Image file routines
-------------------
fg_dispfile display a pixel run file, packed or unpacked
fg_flicdone close an FLI or FLC file
fg_flichead read an FLI or FLC file header
fg_flicmode determine optimal video mode for an FLI or FLC file
fg_flicopen open an FLI or FLC file
fg_flicplay play one or more frames from an FLI or FLC file
fg_flicsize return FLI or FLC image dimensions
fg_flicskip advance one or more frames in an FLI or FLC file
fg_gifhead read a GIF file global header and first local header
fg_gifmode determine optimal video mode for a GIF file
fg_gifpal retrieve palette information from a GIF file
fg_gifrange return GIF image dimensions
fg_imagebuf define the address and size of the image file buffer
fg_loadpcx load a PCX image into a virtual buffer
fg_makegif create a GIF file from a rectangular region of the active
video page
fg_makepcx create a PCX file from a rectangular region of the active
video page
fg_makeppr create a PPR file from a rectangular region of the active
video page
fg_makespr create an SPR file from a rectangular region of the active
video page
fg_pattern define dither patterns for pixel run maps
fg_pcxhead read a PCX file header into a 128-byte buffer
fg_pcxmode determine the optimal mode for displaying a PCX file
fg_pcxpal retrieve palette information from a PCX file
fg_pcxrange return PCX image dimensions
fg_showflic play an FLI or FLC file
fg_showgif display a GIF file
fg_showpcx display a PCX file
fg_showppr display a packed pixel run (PPR) file
fg_showspr display a standard pixel run (SPR) file (RLE)
Block transfer routines
-----------------------
fg_copypage copy an entire physical, virtual, or logical page
fg_getblock transfer rectangular region from video memory to RAM
fg_gethpage get the number of the current "hidden" video page
fg_putblock transfer rectangular region from RAM to video memory
fg_restore fast rectangular area copy from hidden to visual page
fg_restorew world space version of fg_restore
fg_save fast rectangular area copy from visual to hidden page
fg_savew world space version of fg_save
fg_sethpage establish the hidden video page
fg_tcdefine define transparent color number for fg_tcxfer
fg_tcmask define transparent colors for fg_tcxfer
fg_tcxfer transfer rectangular area with transparent colors
fg_transfer fast rectangular region copy from any page to any page
(bitblt)
Special effects
---------------
fg_fadein copy hidden to visual page in small, random increments
fg_fadeout erase the visual page in small, random increments
fg_pan change the screen origin for full-screen four-directional
smooth scrolling
fg_panw world space version of fg_pan
fg_scroll smooth vertical scrolling of rectangular area
fg_split enable or disable a split screen environment
Keyboard control
----------------
fg_capslock turn the CapsLock key on or off
fg_getkey wait for a keystroke or retrieve the next value from the
keystroke buffer
fg_intkey get the next entry from BIOS keyboard buffer if it is not
empty
fg_kbinit enable or disable the low-level keyboard handler
fg_kblast return scan code of most recent keypress
fg_kbreset reset Fastgraph's low-level keyboard handler
fg_kbtest determine if a key is now pressed or released
fg_numlock get the state of the NumLock key
fg_scrlock get the state of the ScrollLock key
fg_setcaps turn the CapsLock key on or off
fg_setnum turn the NumLock key on or off
fg_waitkey wait for any keystroke
Mouse management
----------------
fg_mouse256 define 256-color mouse cursor
fg_mousebut get information about the mouse - were buttons pressed, and
where?
fg_mousecur define the appearance of the mouse cursor in text modes
fg_mousefin unhook Fastgraph's XVGA or SVGA mouse handler
fg_mouseini initialize the mouse
fg_mouselim define limits the mouse movement
fg_mousemov position the mouse cursor
fg_mousepos get the current mouse position and button status
fg_mouseptr define shape and appearance of mouse cursor in graphics modes
fg_mousespd control the speed of mouse cursor relative to the speed of
the mouse
fg_mousevis make the mouse cursor visible or invisible
Joystick support
----------------
fg_button get a joystick's button status
fg_getxjoy get the horizontal position of the specified joystick
fg_getyjoy get the vertical position of the specified joystick
fg_initjoy initialize either joystick
fg_intjoy return keyboard codes analogous to joystick position and
button status
Sound effects and music
-----------------------
fg_hush immediately stop any asynchronous sound or music
fg_hushnext stop asynchronous sound or music after the current iteration
fg_music play a sequence of musical notes
fg_musicb play asynchronous music (background music)
fg_playing determine whether there is any asynchronous sound in progress
fg_quiet stop continuous sound
fg_resume after suspending asynchronous music, continue the music
fg_sound produce a tone of specified frequency and duration
fg_sounds play a series of tones, concurrent with other activity
fg_suspend suspend asynchronous sound (see fg_resume)
fg_voice produce sound on TI sound chip (as in Tandy 1000)
fg_voices play a series of tones on TI sound chip, concurrent with
other activity
Timing
------
fg_getclock get the number of clock ticks since midnight
fg_measure benchmark the system speed to determine delay units for
fg_stall
fg_stall stall for a given number of delay units (see fg_measure)
fg_waitfor delay a specified number of clock ticks (18.2 per second)
Miscellaneous
-------------
fg_getbanks return current SVGA read and write bank numbers
fg_memavail determine the amount of conventional memory available to DOS
fg_memory return the amount of video memory present in kilobytes
fg_setbanks define SVGA read and write bank numbers
fg_setfunc specify the logical operation in EGA/VGA modes (for XORing,
etc.)
fg_svgaver return Fastgraph SVGA kernel version number
fg_version return Fastgraph version number
fg_vgastate save or restore the internal VGA state
fg_waitvr specify if functions wait internally for vertical retrace
Comments
Post a Comment