home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 December / Chip_1999-12_cd.bin / zkuste / Svet_OS2 / DOOM_19 / DMOS219S.ZIP / gamesrvr.doc < prev    next >
Text File  |  1995-04-14  |  5KB  |  123 lines

  1. GAMESRVR.DLL -- Full-screen support for DIVE game applications           
  2.  
  3. Overview: 
  4. ---------
  5.  
  6. The purpose of the GameSrvr is to support games in video modes other
  7. than that used by the OS/2 desktop.  The reason for this is quite
  8. simple:  SPEED.
  9.  
  10. Most games on the market today use the 320x200x256 VGA mode.  There are
  11. a number of reasons for using this mode that outweigh the mediocre
  12. resolution of 320 by 200 pels in 256 colors.
  13.  
  14.   Compatibility:  This mode exists on all VGA and SuperVGA cards.
  15.  
  16.   Ease of Use:  This mode uses a flat frame buffer and exactly one byte
  17.      per pel.  This greatly simplifies the coding of graphics routines,
  18.      since hardware registers and bit packing can be ignored.
  19.  
  20.   Speed:  Not only are the graphics algorithms faster due to their
  21.      simplicity, but the buffer is only 64000 bytes.  Compare this to a
  22.      typical desktop resolution of 1024x768x256 with a frame buffer of
  23.      786432 bytes, more than 12 times larger and slower.  If the
  24.      resolution or number of colors is increased, this will only get
  25.      worse.
  26.  
  27. By using the functions provided by the GameSrvr, PM programs can be
  28. written to use the full screen without paying the penalty of a large
  29. frame buffer.
  30.  
  31. Installation and Use: 
  32. ---------------------
  33.  
  34. To install the GameSrvr, run GSRVINST.EXE to perform the following
  35. steps:
  36.  
  37.   Copy GAMESRVR.DLL and DIVE.DLL to d:\OS2\DLL, where d is the boot
  38.   drive.
  39.  
  40.   Add the GAMESRVR key to the PM_ED_HOOKS application in OS2.INI with
  41.   the key value of d:\OS2\DLL\GAMESRVR.DLL, where d is the boot drive.
  42.  
  43.   If SVGADATA.PMI exists in the d:\OS2 directory, copy SVGA.EXE to
  44.   d:\OS2, then execute SVGA ON INIT to rebuild the SVGADATA.PMI file,
  45.   adding the 320x200x256 mode.
  46.  
  47. Depending on the video card that you have installed, the installation may
  48. end in the full-screen DOS session where SVGA.EXE was executed.  If so,
  49. you should type EXIT to return to your OS/2 session.
  50.  
  51. The system will have to be rebooted to allow these changes to take
  52. effect.  Applications written to use the GameSrvr will automatically
  53. take advantage of its presence.
  54.  
  55. Programming: 
  56. ------------
  57.  
  58. The GameSrvr is loaded at execution time by performing a DosLoadModule
  59. on GAMESRVR.  If this is successful, the address of the
  60. InitGameFrameProc routine my be queried using DosQueryProcAddr.  When
  61. you call this routine with the handle of the frame window of the
  62. application, it subclasses the frame window procedure.  This allows the
  63. GameSrvr to process all messages sent to the application, especially
  64. focus change messages which may require restoration of the original
  65. desktop mode.
  66.  
  67. Communication with the GameSrvr is through the following three messages:
  68.  
  69.   WM_SetVideoMode (0x04A0)
  70.  
  71.     This message uses mp1 to select either one of the preset game window
  72.     styles or a specific video mode, as extracted from the table of
  73.     supported video modes.
  74.  
  75.     mp1 == 0 restores the original mode of the desktop, as well as the
  76.              original size and location of the application's window.
  77.  
  78.     mp1 == 1 restores the original mode of the desktop, but expands the
  79.              size of the client window so that only the client window
  80.              and the command bar are visible.
  81.  
  82.     mp1 == 2 expands the client window to fill the screen, then sets the
  83.              video mode to the standard 320x200x256 game mode.
  84.  
  85.     mp1 > 2 expands the client window to fill the screen, then sets the
  86.              video mode defined by the VIDEOMODEINFO structure addressed
  87.              by mp1.
  88.  
  89.     The return value from this message is 1, if successful, otherwise 0.
  90.  
  91.   WM_NotifyVideoModeChange (0x04A1)
  92.  
  93.     This message is generated by the GameSrvr to notify the application
  94.     immediately before and again immediately after a video mode change.
  95.  
  96.     mp1 == 0 indicates that the video mode is about to change.
  97.  
  98.     mp1 == 1 indicates that the video mode change is complete.
  99.  
  100.     In both cases, mp2 contains the address of the VIDEOMODEINFO
  101.     structure which describes the video mode or 0 or 1, as described for
  102.     the WM_SetVideoMode message.  The value of 2 will never be returned.
  103.     Instead it is transformed into a pointer to a VIDEOMODEINFO
  104.     structure.
  105.  
  106.     The return value of this message is ignored.
  107.  
  108.   WM_GetVideoModeTable (0x04A2)
  109.  
  110.     This message is used only if you wish to select a video mode other
  111.     than the standard 320x200x256 mode.
  112.  
  113.     mp1 is the address of a PVOID to receive the address of an array of
  114.              VIDEOMODEINFO structures describing all of the modes
  115.              supported by the current display card.  This array is
  116.              allocated for you.  You may delete it yourself or allow it
  117.              to be automatically deleted at process termination.
  118.  
  119.     mp2 is the address of a ULONG to receive the number of structures in
  120.              the array that was allocated.
  121.  
  122.     The return value from this message is 1, if successful, otherwise 0.
  123.