


XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



NAME
     xmris - video game for X

SYNOPSIS
     xmris [-option ...] [-toolkitoption ...]

     xmsit [-option ...] [-toolkitoption ...]

DESCRIPTION
     Xmris is a version of the Mr Do video arcade game for the  X
     Window System.

     You control a gnome, who can walk  around  a  garden,  along
     paths already marked, or create new paths wherever you wish.
     You also have a ball, which can be thrown in  the  direction
     you're  facing,  towards the gnome's feet. Points are scored
     for collecting cherries (if you collect 8  cherries  without
     stopping,  you  get a bonus), killing monsters (by squashing
     them, or throwing the ball  at  them),  and  collecting  the
     prize left when all the monsters have come out of their den.

     Extra lives are obtained by killing all the 'EXTRA' monsters
     at  the  top  of the screen, so that the letters change from
     stippled to solid (or grey to black or white,  if  you  have
     colour,  and you haven't changed the defaults). One of these
     comes out on its own every 5000 points.   When  you  collect
     the  prize, the normal monsters freeze, and an extra monster
     emerges, along with 3 drones.  Killing  the  letter  monster
     will  kill  the  drones too. When the three drones are dead,
     the normal monsters wake up and things go faster.  When  all
     the  normal  monsters  are  killed, or all the cherries col-
     lected, or you have got the final extra monster, you advance
     to the next screen.

     You can kill the monsters by throwing the ball at  them,  or
     dropping the apples on them. You get more points for squash-
     ing them, and the more you squash in one go, the more points
     you  get.  The  extra  monster,  and its drones, can eat the
     apples, provided that they're  walking  towards  the  apple.
     You  die  by  colliding with a monster (unless its eating an
     apple, in which case no harm is done), or by being  squashed
     by  a  falling  apple.  Sometimes a falling apple will break
     open to reveal a diamond. The points scores  are  scaled  by
     the game speed, (see below).

     Your score may be immortalized in the all time  best  scores
     and/or  the best of the day scores, and/or your own personal
     best scores. If your score was added to the best of the  day
     after  21:00,  it is kept until noon the next day, otherwise
     it will be removed at midnight. There is only one entry  per
     user in the all time best and the best of the day tables.




X Version 11      Last change: 18 December 1992                 1






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



     There are two load lines at the bottom edge of  the  window.
     One shows the frame time ratio and grows from left to right.
     The other shows the frame loading and grows  from  right  to
     left.  Note  that these two lines can overlap, and are drawn
     with xor plotting. The frame load line grows  by  one  pixel
     for  every frame which took longer to animate than there was
     allotted time, and is shrunk by one  pixel  for  each  frame
     which  is  animated  in time. The frame time ratio shows the
     actual frame time, relative to the the ideal frame time. For
     a  frame time ratio of r, the line is 1 - 1 / r the width of
     the window. Ie, for frame time ratio of 3 (one third  speed)
     it  covers  two  thirds of the window width. The frame timee
     ratio is a long time average of the real frame times. It  is
     used  to scale the points scored in the game. The higher the
     ratio, the lower the score, thus making  heterogeneous  com-
     parisons possible. The score scaling is biased towards lower
     frame ratios, so you can't get a higher score just by making
     the  game slower. If your system becomes heavily loaded, you
     can pause the game, to prevent the  fram  time  ratio  being
     updated. When the frame load line diminishes, you can resume
     the game.

     Because an interrupt is used to control the frame rate,  the
     animation is reasonably smooth. The game works best with all
     other processes asleep. If another  process  gets  too  much
     processor  time,  the  animation will be jerky, and the load
     line will start to grow.

     You probably want to position the pointer at the  bottom  of
     the  window,  so  that  it doesn't interfere with the board.
     You'll notice it flicker, if one of the sprites moves  under
     it.

     The game is controlled from the keyboard. All the key  bind-
     ings  can  be  changed  by  the toolkit application resource
     mechanism, or during one of the demonstration screens. There
     are  four  direction keys, known as up, down, left and right
     and the ball can be thrown with  the  throw  key.   Pressing
     more  than  one  direction key will turn the gnome appropri-
     ately at the next intersection, so you can go round  corners
     by  pressing  the new direction key before releasing the old
     one. If you try to go in a direction not possible, the gnome
     will move towards the nearest intersection, or in the direc-
     tion it was going, depending on how near to an  intersection
     it  is. As an example, suppose you're going left and want to
     go up at the next intersection, the sequence would be,

             left pressed, because that's the way you're going
             up pressed, before the intersection
             left released, when you've gone round the corner





X Version 11      Last change: 18 December 1992                 2






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



     The game can be paused by iconizing it with the iconize  key
     (when  your boss walks in), or moving the pointer out of the
     window, or by pressing the pause key. When de-iconizied, the
     game remains paused.  To continue, press the throw key. When
     paused, you can abort the current game by pressing the  quit
     key.  If  the  game is displaying the demonstration screens,
     the quit key will quit the game, and pause  key  will  cycle
     onto  the  next  demonstration screen. During the game there
     are several information screens and  pauses,  these  can  be
     skipped by pressing the throw key.

     The keys can be changed by using the keyboard key. Each log-
     ical  key name is prompted for, and you can select a new key
     binding by pressing the one you want. Pressing the throw key
     will  keep the binding for that particular key (remember the
     throw key may change half way  through  this  process).  You
     cannot map one key onto two functions, xmris will wait until
     you give an unambiguous set of keys.

     Xmris will use colour sprites, if the visual permits it (has
     a  colour  map  size of more than 15, and you haven't forced
     monochrome). All the colours bar black and  white  are  user
     definable.  There  are  four  sets, one for each of the four
     combinations of gender and swap flag. The colours are  allo-
     cated  in  reverse  order of their distance in colour space,
     from currently allocated colours (the most  distant  colours
     are  allocated first). That way, if allocation fails because
     the colour map is  full,  an  allocated  substitute  colour,
     which  is  nearest  the  desired colour, can be used and the
     allocated colours are kept maximally distant.  You can limit
     the number of distinct colours with the -distinct option.  A
     warning message is sent to stderr, if  a  colour  allocation
     fails.  The -colours argument shows how these are allocated,
     and -help -colours can be used to get  the  colour  resource
     names.

OPTIONS
     Xmris accepts the standard X Toolkit  options,  as  well  as
     these.

     -help
          Lists the command options, application resource  fields
          and  some  other  information to stderr. Does not start
          the game. If the -colours option is supplied too,  then
          the colour resource classes are listed instead.

     -swap
     -rv
     -reverse
          Normally the foreground is  black  and  the  background
          white, this swaps them round.




X Version 11      Last change: 18 December 1992                 3






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



     -noswap
          Override a swap resource in your  resources,  to  force
          unswapped colours.

     -bw
     -mono
          Use black and white, even on colour displays.

     -mris
     -msit
     -gender _g_e_n_d_e_r
          Xmris can also be run as xmsit. The two sexes have dif-
          ferent  sprites.   Mris  selects  the  classic sprites,
          while msit selects a more modern set.   The  gender  of
          the  game is taken from the program name (mris or msit)
          but may be overridden by these two switches.  The  game
          is  known  as xmris, because the arcade game was mascu-
          line.

     -dir _s_c_o_r_e _d_i_r_e_c_t_o_r_y
          Specify a different score directory.

     -nopause
     -pause
          These select whether you want the game to pause or not,
          when  the  pointer leaves the window. Pausing can cause
          problems with some window managers and  other  programs
          which hide the pointer.

     -scores
          List the high scores to  stdout.  Does  not  start  the
          game.

     -visual _v_i_s_u_a_l _c_l_a_s_s
          Xmris will pick the default visual, but you  can  over-
          ride  that  by  specifying  a  particular visual class.
          Valid classes are PseudoColor, DirectColor,  TrueColor,
          StaticColor, GrayScale, StaticGray. To see which one is
          picked, you can use the -colours  option.   If  you  do
          select  a non-default visual, you may have to specify a
          private colour map  too,  due  to  limitations  of  the
          server or display.

     -private
          This forces xmris to allocate  a  private  colour  map.
          Normally xmris will share the default colour map of the
          selected visual, but if that does not have enough  free
          colour cells then some colours will have to be shared.

     -colours
     -colors
          Show how the colours are allocated,  and  which  visual



X Version 11      Last change: 18 December 1992                 4






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



          has been selected.  The allocation is listed to stdout.
          When allocating each colour, its resource name and  rgb
          values  are  listed  together  with the nearest already
          allocated colour  and  the  distance  between  them  in
          colour  space.  The  allocated  pixel number is printed
          last. If  given  with  the  -help  option,  the  colour
          resource  classes  are  listed,  and  the game does not
          start.

     -distinct _n
          Sets the number of  distinct  colours  used  (excluding
          black  and white). This can be used to limit the number
          of colours used from the colour map.

     -sprites
          Show all the sprites during the demo screen cycle. This
          can  be  used  when  you  are  defining your own sprite
          colours. The direction keys will control the  direction
          in  which  the demonstration animated sprites face, and
          the throw key will cycle  the  background  colours  for
          pseudo colour visuals.

RESOURCES
     Xmris uses the X toolkit application resource mechanism  for
     setting up the environment. Application resource items start
     with 'Xmris'. The resource name  can  be  derived  from  the
     given  resource  class  by  decapitalizing  it.  For example
     'cherryStalk' is the resource name for the  class  'cherryS-
     talk'.  The  following classes are used (choices in '{}' and
     defaults in '[]'.)

     Xmris.Up: _k_e_y_s_y_m [apostrophe]
     Xmris.Down: _k_e_y_s_y_m [slash]
     Xmris.Left: _k_e_y_s_y_m [z]
     Xmris.Right: _k_e_y_s_y_m [x]
     Xmris.Throw: _k_e_y_s_y_m [space]
     Xmris.Pause: _k_e_y_s_y_m [p]
     Xmris.Quit: _k_e_y_s_y_m [q]
     Xmris.Iconize: _k_e_y_s_y_m [i]
     Xmris.Keyboard: _k_e_y_s_y_m [k]
          These give the logical key bindings. If the key  symbol
          is  unknown,  the  default  will be used, and a warning
          printed.

     Xmris.dir: _s_c_o_r_e-_d_i_r_e_c_t_o_r_y
          The name of the high score directory.

     Xmris.Swap: {_y_e_s, _n_o} [no]
          Specifies whether to use swapped colours or not, in the
          absence of a -swap flag.

     Xmris.Mono: {_y_e_s, _n_o} [no]



X Version 11      Last change: 18 December 1992                 5






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



          Sets whether the default is for  monochrome  on  colour
          displays.

     Xmris.LeavePause: {_y_e_s, _n_o} [yes]
          Sets the default pausing  behaviour  when  the  pointer
          leaves the window.

     Xmris.Gender: {_m_r_i_s, _h_e, _m_a_l_e, _m_s_i_t, _s_h_e,
          Sets the default game gender.

     Xmris.Visual: {_P_s_e_u_d_o_C_o_l_o_r, _D_i_r_e_c_t_C_o_l_o_r, _T_r_u_e_C_o_l_o_r,
          _S_t_a_t_i_c_C_o_l_o_r, _G_r_a_y_S_c_a_l_e, _S_t_a_t_i_c_G_r_a_y}

          Set the required visual class to use.

     Xmris.Private: {_y_e_s, _n_o} [no]
          Set whether or not to use a private colour map.

     Xmris.Distinct: _n
          Set the number of distinct colours allocated  from  the
          colour map.

     For example, if you want to use the arrow keys, the  follow-
     ing will work

             Xmris.Up:       Up
             Xmris.Down:     Down
             Xmris.Left:     Left
             Xmris.Right:    Right

     In addition, you have the normal  resources  such  as  font.
     However,  the  generic font ('*Font') will not be picked up,
     you have to have an explicit xmris font, if you want a  dif-
     ferent  one.  (This is because most resource paths have some
     kind of generic font on them, which is too  small  and  ugly
     for xmris.)

     There are many colour name defaults. You  can  specify  dif-
     ferent  ones  for  the  four combinations of gender and swap
     flags, or use the same for some combinations.  There  is  no
     reason  why  all these cannot be different colours, but note
     that the more unique colours you define, the more colour map
     entries  you  will  use  up. The colours black and white are
     already known about, but because of the  way  X  parses  hex
     colour names, I have programmed white as #FF00FF00FF00 (what
     #FFFFFF expands to), not #FFFFFFFFFFFF (what I think #FFFFFF
     should  expand  to).  This means that if you specify a white
     colour to more than 8 bit accuracy, a  new  colour  will  be
     allocated.  (This  is a bug.) Of course, you can specify the
     colours by name ('NavajoWhite'), so long as X can grok it by
     searching your colour database.




X Version 11      Last change: 18 December 1992                 6






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



     Most of the sprites have a black edge to them on the  noswap
     colour  scheme,  this gives comic like sprites. This edge is
     not included for the swap colour scheme,  and  the  sprite's
     colours  go  right  up  to  the  sprite's edge.  Most of the
     sprites will be surrounded  by  a  halo  of  the  background
     colour,  so  that  they don't blend in with each other, when
     crossing.  Another thing to watch out is contrast  compensa-
     tion.   Because  of  eye  physiology,  colours can look dif-
     ferent, depending on  the  surrounding  colours,  and  light
     colours  look  brighter  on dark backgrounds than they do on
     light ones. A particular case of the former is  if  pink  is
     used  for the player's face. On white backgrounds pink looks
     alright, but on dark backgrounds the  pink  can  look  quite
     brown,  and  must  be brightened up, if you still want it to
     look pink.  The latter effect means that the blue  used  for
     the  drones is bright for a dark background and darker for a
     light background. There is no requirement that those colours
     with  a  specific  colour  in their name, need actually be a
     shade of that colour. For example GreenBack could be #A020F0
     (purple).   You  can  use the -sprites and -colours flags to
     check out how these colours have been defined and look,  and
     -distinct to limit the distinct colours used.

     The colour resources  use  the  widget  classes  'Mris'  and
     'Msit'  and  the optional sub resource 'Swap'. The following
     are valid.

             Xmris*Background:               for all versions
             Xmris.Mris*Background:          for mris versions
             Xmris.Mris.Swap.Background:     for swapped mris
             Xmris.Mris.Background:          for unswapped mris
             Xmris.Msit*Background:          for all msit versions
             Xmris.Msit.Swap.Background:     for swapped msit version
             Xmris*Swap.Background:          for all swapped versions

     The usual toolkit parsing rules apply  to  these  resources.
     Namely  that  '*'  is  used to fill out levels of hierarchy,
     while '.' is used for explicit matching.  The  toolkit  uses
     the  longest matching string to select resources in the case
     of ambiguities. Ie, 'Xmris*Swap.Background' will be selected
     over

     The defaults for 'Mris', 'Mris.Swap', 'Msit' and 'Msit.Swap'
     are included after the resource class.

     Background [#FFFFFF, #000000, #FFFFFF, #000000]
     Foreground [#000000, #FFFFFF, #000000, #FFFFFF]
          The main foreground and background colours.  The  fore-
          ground  colour  is used for all text and on board scor-
          ing. The background is used for the pathways  and  non-
          board parts of the screen.




X Version 11      Last change: 18 December 1992                 7






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



     GreenBack [#77BB77, #BBFFBB, #77BB77, #BBFFBB]
     GreenFore [#007700, #00BB00, #007700, #00BB00]
     RedBack [#BB7777, #FFBBBB, #BB7777, #FFBBBB]
     RedFore [#770000, #BB0000, #770000, #BB0000]
     BlueBack [#7777BB, #BBBBFF, #7777BB, #BBBBFF]
     BlueFore [#000077, #0000BB, #000077, #0000BB]
     DroneBack [#AA3333, #FF6666, ------, ------]
     DroneFore [#992222, #FF2222, ------, ------]
          These are the board colours used for  the  hedges.  Two
          are used per screen.  For pseudo colour visuals, drone-
          back and dronefore are used when the prize is eaten.

     Ball [#FFFF77, #FFFF77, #FF00FF, #FF00FF]
          This is the ball colour.

     CherryRed [#EE0000, #EE0000, #EE0000, #EE0000]
     CherryStalk [ ------, #EEAA66, ------, #EEAA66]
          The cherries use two colours, one for the fruit and the
          other  for  the  stalk.  The  cherry's  glint is always
          white.

     Apple1 [#EEDD00, #EEDD00, #EEDD00, #EEDD00]
     Apple2 [#DD3300, #DD3300, #DD3300, #DD3300]
     AppleFaint [#BBBBBB, ------, #BBBBBB, ------]
          The apples use two colours for their skin. The  apple's
          flesh and glint is always white.

     Gem1 [#DDDDDD, #DDDDDD, #DDDDDD, #DDDDDD]
     Gem2 [#BBBBBB, #BBBBBB, #BBBBBB, #BBBBBB]
          The gem facets are white or one of the two gem colours.
          The  lines  between  them  are black and the sparkle is
          black for the noswap scheme and white  colour  for  the
          swap scheme.

     LetterGot [#000000, #FFFFFF, #000000, #FFFFFF]
     LetterNotGot [#BBBBBB, #BBBBBB, #BBBBBB, #BBBBBB]
          The extra letters and game  title  lettering  uses  two
          colours.  One  to show letters which have been got, one
          for those which have not been got. They do not have  an
          edge colour put around them.

     Normal [#EE0000, #EE0000, #EE0000, #EE0000]
     Munch1 [#FFFF00, #FFFF00, #FFCC00, #FFCC00]
     Munch2 [#CCCCCC, #CCCCCC, #FFCC00, #FFCC00]
     Drone [#0000DD, #6666FF, #00FF00, #00FF00]
     DroneTongue [ ------, ------, #EE0000, #EE0000]
     Extra [#EEFF00, #EEFF00, #EEFF00, #EEFF00]
     Chomp [#FFFFFF, #FFFFFF, #CCFF00, #CCFF00]
     ChompLip [#77FFFF, #77FFFF, ------, ------]
     ChompTongue [ ------, ------, #EE0000, #EE0000]
          Most of the monsters have only  one  additional  colour
          (to  black  and white), but in some instances there are



X Version 11      Last change: 18 December 1992                 8






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



          additional colours for  the  features  implied  by  the
          resource name.

     Player [#0000DD, #6666FF, #6666FF, #6666FF]
     PlayerBobble [#FFFFFF, #FFFFFF, #FFFFFF, #FFFFFF]
     PlayerSkin [#FFCCCC, #FFDDDD, #FFCCCC, #FFDDDD]
     PlayerBoot [ ------, #EEAA66, #773322, #DD9955]
          The player uses four additional  colours.   The  bobble
          colour  is  also  used  for  the flecks in the player's
          suit. The skin colour is used for the face and hands.

     Seat [#EE0000, #EE0000, #EE0000, #EE0000]
          The little seat on which you can rest uses  this  addi-
          tional colour.

     Cake [#FFFF77, #FFFF77, #FFFF77, #FFFF77]
     CakeIcing [#DD9955, #EEAA66, #DD9955, #EEAA66]
     CakeJam [#EE0000, #EE0000, #EE0000, #EE0000]
          The cake prize has an  icing  layer  and  a  jam  layer
          around the cake layers.

     Spanner [#AAAAAA, #DDDDDD, #AAAAAA, #DDDDDD]
     SpannerShadow [#000000, #000000, #000000, #000000]
          The spanner prize only uses these two colours.

     Brolly1 [#FFFFFF, #FFFFFF, #FFFFFF, #FFFFFF]
     Brolly2 [#EE0000, #EE0000, #EE0000, #EE0000]
     BrollyHandle [#DD9955, #EEAA66, #DD9955, #EEAA66]
          The umbrella prize uses four colours. The  edge  colour
          is used to demark the parasol colour areas.

     MushroomStalk [#FFFFFF, #FFFFFF, #FFFFFF, #FFFFFF]
     MushroomCap [#EE0000, #EE0000, #EE0000, #EE0000]
          The mushroom prize uses these two additional colours.

     ClockFace [#FFFFFF, #FFFFFF, #FFFFFF, #FFFFFF]
     ClockBell [#00DD00, #00DD00, #00DD00, #00DD00]
     ClockRim [#0000DD, #00DD00, #00DD00, #00DD00]
          The clock prize uses these thee additional colours.

ENVIRONMENT
     DISPLAY
         The default display to connect  to.  May  be  overridden
         with the -display option.

     LOGNAME, USER
         Read to determine the name to use for the score  tables,
         if getpwuid(3) fails.

FILES
     .../xmris.score
          The high score file. The directory is system dependent,



X Version 11      Last change: 18 December 1992                 9






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



          and  may be changed by application resources or command
          option. This file must exist to be used,  (by  touching
          it),  and  writable  to  by  xmris. This can be done by
          chmoding  the  score  file,  or  by   setuiding   xmris
          appropriately.

     .../xmris.lock
          In some systems, where lockf doesn't  work,  this  tem-
          porary  file is used to perform the locking. The direc-
          tory containing it must be writable by xmris. This  can
          be  done  by  chmoding  the  directory, or by setuiding
          xmris appropriately.

     .../xmris-<name>
     ~/.xmris.score
          These files are used to store the personal best scores.
          These  may  be stored in the score directory, or in the
          user's home directory.  Xmris first looks for the  per-
          sonal score file in the score directory and then in the
          home directory (by reading $HOME). If a personal  score
          file  cannot  be  found,  xmris attempts to create one.
          Provided that a global score file  exists,  xmris  will
          attempt  to  create  the  personal  files  in the score
          directory. If this cannot be done  the  personal  score
          file  if  placed  in  the  home  directory. In order to
          create the personal score file in the score  directory,
          xmris  will  have to have the correct access rights, as
          with the lock file. A  setuid  xmris  will  change  the
          effective  uid  correctly  for accessing both the score
          directory and the user's home directory.

     ~/.Xdefaults
     .../Xmris.ad
     .../Xmris-color.ad
          You can place you favourite key bindings and  stuff  in
          an  application resource file, and xmris will use them,
          rather than its compiled defaults.  See X for  informa-
          tion about how these are searched.

     /usr/lib/X11/rgb.txt
          The usual name for the colour database. It consists  of
          colour names and associated rgb values.

ERRORS
     Errors can occur opening the high score file. If you  use  a
     lock  file,  rather than lockf, and an error occurs creating
     the lock file, a message is  printed  on  stderr,  and  file
     locking is not done for that access. Subsequent accesses may
     be alright.

     If an error occurs opening the  score  file,  a  message  is
     printed on stderr, and the score file is disabled.



X Version 11      Last change: 18 December 1992                10






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



BUGS
     Xmris can be addictive, so  don't  blame  me  if  your  work
     suffers.

     Sometimes xmris will lose key release events,  or  stop  and
     start  even  with  a  key pressed. This is really a conflict
     with the window manger. If a key is pressed, and xmris loses
     keyboard  focus  (by being obscured, or moving the pointer),
     the key release event is sent to some other  window.   Xmris
     is left thinking that the button is pressed. The event could
     also be lost, if the  event  buffer  isn't  big  enough.  To
     unstick  the key, press and release it. With an auto repeat,
     xmris cannot tell if key release events are genuine, or just
     auto  repeats  (to  be  immediately  followed by a key press
     event). If the key press event arrives in  the  same  frame,
     then  it's  Ok,  and the key will remain pressed (as seen by
     xmris). Xmris tries to flush key press events through  when-
     ever  a  key release event is received.  Try turning of auto
     repeat with '_x_s_e_t _r _o_f_f' to fix it.  An  associated  problem
     of  getting both the key press and key release events in the
     same frame, is dealt with correctly.

     Xmris does not check that the key definitions in the  appli-
     cation  resources  do  not conflict with each other. Neither
     are the colours checked to  see  that  things  are  actually
     visible.

     Some of the -msit -swap sprites have black pixels  at  their
     edge.   These should really be background colour pixels, but
     this is only significant if the -swap background  colour  is
     not dark.

     Best of the day scores scored between 21:00 Dec 31 and 00:00
     Jan 1, won't be kept until noon on New Year's Day.

     One  of  the  sprites  with  lettering,  has  the  lettering
     reversed when facing left.

     Getting accurate, stable timing is difficult, as Unix is not
     a  real  time  OS. Unix schedules processes in ticks, with a
     certain granularity. Getting finer grained timing than  that
     is  very  much system dependent. You can try and compensate,
     and get the correct average frame rate, but  that  leads  to
     jerky  animation.  Some frames will be shown for N ticks and
     others for N+1 ticks. This effect makes it  worse  to  play.
     There  is  also slippage between receiving one interrupt and
     starting the next one. You don't want to get  the  interrupt
     to  restart  itself  (even  though this is possible), as you
     then get very rude behaviour if your main loop is a bit  too
     slow,  (suddenly xmris goes at warp 9, trying to catch up on
     all the missed frames).




X Version 11      Last change: 18 December 1992                11






XMRIS(6)                 GAMES AND DEMOS                 XMRIS(6)



COPYRIGHT
     Copyright (C) 1992 Nathan Sidwell.

AUTHOR
     Nathan Sidwell <nathan@inmos.co.uk>

     Additional sprites by Stefan Gustavson <stefang@isy.liu.se>
















































X Version 11      Last change: 18 December 1992                12



