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

Comments

Popular posts from this blog

BOTTOM LIVE script

Fawlty Towers script for "A Touch of Class"