home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / linewars.zip / LINETECH.DOC < prev    next >
Text File  |  1989-06-09  |  6KB  |  102 lines

  1.                         L I N E W A R S   Version 1.xx  
  2.                        Made in Finland by Patrick Aalto  
  3.  
  4.       Technical Information
  5.       
  6.         LineWars is compiled with Turbo Pascal 5.0 (currently 1000 lines)  
  7.       and  Microsoft  Macro Assembler 4.0  (very many lines).  The source
  8.       code takes about 400KB of disk storage.  LineWars is constructed as
  9.       a  Pascal main program having various Assembler units to call.  The
  10.       whole graphical game is one unit.
  11.       
  12.       Initial Procedures  
  13.  
  14.         When LineWars is started, it first checks that you really do have
  15.       an EGA card.  It does this by checking that EGA ROM BIOS at address
  16.       C000h:001Eh...0020h contains letters 'IBM'.  If not, the program is 
  17.       terminated to prevent possible damage on your non-EGA display. When
  18.       LineWarC is started, this check is not used.
  19.       
  20.         After that check  LineWars reads in  the settings-file.  It first
  21.       checks the command line parameters and reads the file mentioned, if
  22.       it exists.  If not,  default settings are used.  If no command line
  23.       parameters are given,  LineWars tries to read  a file LINEWARS.SET.
  24.       If it cannot be found, again default settings are used.
  25.       
  26.         When settings are read in,  LineWars takes posession of  a RS-232
  27.       line and it's interrupts.  It does this whether War Mode is Duel or
  28.       Single. If Baudrate is not 'Check',  LineWars also changes the baud
  29.       rate of the appropriate com port.
  30.       
  31.         After that the current screen contents are saved and Main menu is
  32.       shown. If Connect Mode is 'BBS-"door"', LineWars sends it's logo to
  33.       communications line. Cursor is also made hidden now.
  34.       
  35.         While in Main Menu,  the line is constantly monitored to check if
  36.       we received an order to play ('ε' = ascii 238) or to start terminal
  37.       ('∞' = ascii 236) or,  if 'BBS-"door",  a request to quit (ctrl-X).
  38.       If none of these is received, LineWars checks if the user requested
  39.       an action. If so, that action is taken. If the action was Terminal,
  40.       an ascii 236 is sent to line, and if the action was 'quit',  ctrl-X
  41.       is sent, unless in BBS-"door" mode,  when ascii 236 is sent to make
  42.       the other side start terminal mode and receive 'LineWars quitting'-
  43.       texts.
  44.       
  45.         If Play is selected, then  EGA / CGA appropriate graphics mode is
  46.       selected and the Cobra IV cockpit drawn on the screen.  If War Mode
  47.       is Duel,  LineWars shows a 'wait for connection'-message and begins
  48.       to wait for incoming 'ε'. If one is not received within half a sec,
  49.       'ε' is sent to line. This repeats until 'ε' is received or the user
  50.       presses ESC. After a succesfull connection,  LineWars sends to line
  51.       your codename  plus information whether your Key Damp is on or off.
  52.       It then tries to receive that information.  When this is done,  the
  53.       game starts.
  54.       
  55.         When in game,  first the  keyboard interrupt is changed to make a
  56.       distinction between control- and letter keys.  Then all meters  are
  57.       drawn,  the MainViewer opened  and the line begins to transfer info
  58.       about which keys the user presses.
  59.       
  60.         After your shield energy is totally exhausted, your computer will
  61.       say 'Ouch, that hurts' and your opponent will see your ship explode.
  62.       The human voice  is part of  a digitized speech demo  I came across
  63.       while developing the game.  I think it sounds pretty nice,  but you
  64.       may disagree.  You cannot turn it off,  however.  There is a chance
  65.       that this speech procedure will hang a  4.77 Mhz machine,  but then
  66.       again who still has such a machine? (with EGA!) :-)  That digitized
  67.       speech,  together with  the procedure to drive speaker,  takes less 
  68.       than 2 Kbytes of code, by the way.      
  69.       
  70.       Line Protocol
  71.         
  72.         When in actual battle,  LineWars sends and receives  one byte per
  73.       every new frame.  That means  the line must be able  to transfer 18
  74.       characters per second if the Framerate is 18Hz. This is because the
  75.       game needs to be synchronized between two machines running possibly 
  76.       at different speeds. If you press a letter-key (or <┘ or BACKSPACE)
  77.       it  will be sent  between two synchronizing bytes  so that the line
  78.       should actually be able to transfer about 30 bytes/sec. at maximum.
  79.       
  80.         The transferred bytes are coded as follows:
  81.         
  82.        7 6 5 4 3 2 1 0  = bit position  
  83.       ┌─┬─┬─┬─┬─┬─┬─┬─┐   
  84.       │0│?│1│?│?│?│?│?│ = Any non-control character (ascii 32..127)  
  85.       ├─┼─┼─┼─┼─┼─┼─┼─┤   
  86.       │1│0│L│R│U│D│x│x│ = Left/Right/Up/Down -key pressed. x = Not used.  
  87.       ├─┼─┼─┼─┼─┼─┼─┼─┤   
  88.       │1│1│L│M│D│I│E│x│ = Laser Fired/Missile Fired/Decrease Speed/  
  89.       └─┴─┴─┴─┴─┴─┴─┴─┘   Increase Speed/Enemy Exploded.
  90.       
  91.       If no key is pressed, ascii code 128 is sent. In addition to those,
  92.       ascii codes 13 and 8 are used for sending RETURN and BACKSPACE.  
  93.           
  94.         As you can see,  only the  most important information  is passed.
  95.       This may result into very different environments  at different ends
  96.       of the line,  but usually one battle  does not last long enough for
  97.       this to be notable.  Possible line errors may  corrupt  or stop the
  98.       game from running.  If this happens,  just press ESC, wait a little 
  99.       while and try the game gain.  Future versions of LineWars  will use
  100.       a line checking method.    
  101.          
  102.