                                   HerNet
                                   ======
Version 1.10 (28 Dec 1998)

Introduction
------------

Network Heretic allows you to play Heretic across the internet. It's as
simple as that.


Usage
-----

Run HerNet.

Negotiate (via other means - ttylink, IRC, phone, yelling down the corridor,
etc) who is going to be the controller. Now enter the names of all the
machines into the boxes. Box 1 should always be your host name. Make sure
that the button is pressed beside the controllers name.

When complete, press Ok. Now start Heretic.

The controller should select the network options he/she requires and then
press 'Heretic' to start the game.


Sites menus
-----------

The menus beside the entry boxes allow you to use a set of preset sites to
use in the game. To edit these, use the 'Sites...' menu option. The SiteEdit
program has a separate help file associated with it, but should be pretty
intuitive in any case.


Playing via a vanilla Acorn Access Network
------------------------------------------

The good news for Access users is that it is TCP/IP-based.  Although Access
only usually uses a cut-down internet stack, it's good enough to run HerNet
over.  Or at least, it is here!

Here's how:
  
  1) Open a task window (most convenient) or press F12 for a command line

  2) Type FWShow
  
  3) This lists two sets of information - the Hosts and the Discs.  The hosts
     are all the machines currently visible on the network.  Your machine
     is marked with a *, note down your ip number (1.x.x.x).  You can use the
     Discs list to find the IP number of other machines.
     
  4) Load HerNet, and enter the numeric ip addresses of machines in the
     boxes provided.  Make sure you enter the current machine's IP address
     in the Me box, and get the server radio button down the left hand side
     set correctly.
     
  5) Repeat for other machines
  
  6) Launch Heretic and Enjoy!           


Playing via a null modem lead
-----------------------------

Although there is a driver currently in development for serial networking
Heretic, you can still play using TCP/IP across a null serial line.

To do this, you require two Acorns, a null modem lead, !Helener
application, a serial driver (PPP or SLIP), a dialler and some time.
A simpler solution is to use the !SHeretic application.

Instructions are included in !Helener for setting up the server and dialler.
Once connected, you should be able to play HerNet across a serial line.


Resolvers
---------

In general internet applications require a resolver to be present. The same
holds for an intranet. HerNet will work without a resolver but you must
enter the IP addresses of the machines you wish to connect to, instead of
the host names.

If HerNet discovers that you have not got a Resolver loaded, it will attempt
to load one. It will warn you if you have no resolver on your system, and
if it has loaded one for you.


Network options
---------------

On some slower networks it may be necessary to increase the number of packets
sent at a time, or to include 'backups' in case some were lost. This can be
done from the options window, available from the 'Options...' menu option.

Increasing the number of 'tics' will make games less jerky but may not be
possible if the network does not allow large packets. Backup packets will
enable 'lost' packets to be recovered without retransmission requests being
needed.

You will need to experiment with these before a suitable setting for your
network can be found.


Problems
--------

'NetUpdate: netbuffer->numtics > BACKUPTICS'
  The network speed is too slow (or too fast)
  Change the number of tics sent and backup tics
  Computers of vastly differing speeds may have this problem (or those on
  slow lossy networks.

'consistency failure (# should be #)'
  The options specified exceed the network capabilities.
  Try reducing the number of tics or removing the backup tics.

'bad packet checksum'
  The network driver is faulty - consult your supplier

'bad packet length #'
  The network driver is faulty - consult your supplier

'Different Heretic versions cannot play a net game!'
  Different Heretic versions cannot play a net game.

The game is 'lumpy', or becomes 'lumpy' after a period
  You are probably trying to use differing computers with a lossy
  connections. The 'lumps' of data are the points at which the slower
  computer manages to catch up.
  The speed of the game is determined by the slower of the frame rate and the
  incoming/outgoing packet processing speed. Where the latter exceeds the
  former, the game will appear to run slower.

I get 'Module HereticSupport not found' when loading the network driver
  You've either broken the copy of Heretic you have, or (Justin) you've run
  the wrong !Heretic application.

I get a black screen which stays on both machines.
  Something has gone wrong in synchronisation. Try F10, Y. That should quit
  and the other machines should be released.

I'm trying it on three (or more) machines and ...
  Setting up > 2 machine Heretic has been something of a headache. However,
  the method that was found to work was to list the nodes in such a way
  that :
   Machine 1. Controller = Me, other three machines in any order
   Machine 2. Controller = Machine 1, in the second slot.
   Machine 3. Controller = Machine 1, in the third slot.
   Machine 4. Controller = Machine 1, in the fourth slot.
  
  Remember that you are always in slot 1.

Whilst starting the game, the display is very jerky.
  This has been observed. However, it can be that this is the 'initialisation
  lag', where the fact that all the machines are starting up into the game
  and caching screens means that the network is swamped as soon as they do
  reach the game. After about 10 or 20 seconds the motion should settle so
  that you can play more normally. If this is not the case, modify the tics
  and backup tics.

Can I get two copies of Heretic running networked on the same machine ?
  Do you want the short answer or the long one ?
  Short answer: No.
  Long answer:  Noooooooooooooooooooooooooooooooooooo.

Can we get drones to work ?
  Probably not.
  Drones are a kind of hang over from an early beta of the game. It is
  possible that they may be implemented in future, but it all depends on
  what else needs doing. They will, of course, need a seperate configuration
  utility.

Does disabling the StrongARM optimisations speed up the game ?
  By about 1-2 fps on non-SA machines.  Not at all on SA machines


Advanced use
------------

You need not read this section if you wish only to play the game; it is
intended for front-end authors and people setting up automated start
sequences.

To initialise HerNet, /without/ running the front-end, you should run !HerNet
with the command line parameter '-quit', eg '*Run <HerNet$Dir>.!Run -quit'.
Once initialised, the HereticSupport and HereticNetwork modules will have
been safely loaded.

There are a number of *Commands you may use to initialise the system :
  
*HereticAddNode <node> <name>|<dotted ip>
   Add a node to the network.
   <node> is the node number to set (0-3)
   <name> is the host name to use
   <dotted ip> is a dotted IP address

*HereticConsole <node>
   Declares who is on the 'console' - ie the controller.

*HereticNodes
   List the current nodes set.

*HereticNoPolling <flag>
   Specifies that we should not poll the Wimp during the setup stage.
   <flag> may be 0 or 1

In addition, there are a number of SWI calls you may use to control the system.


HereticNetwork_SetNode (&51440)
=> R0 = node number
   R1 = pointer to node name, or 0 to unset

Sets up a node (as *HereticAddNode).


HereticNetwork_ReadNodes (&51441)
<= R0 = pointer to nodes block
        +0  Pointer to node 0 name, or 0 if unset
        +8  Pointer to node 1 name, or 0 if unset
        +16 Pointer to node 2 name, or 0 if unset
        +24 Pointer to node 3 name, or 0 if unset

Read the nodes table. You should only read from this table, not alter it
directly.


HereticNetwork_SetConsole (&51442)
=> R0 = console node

Sets the console node (as *HereticConsole).


HereticNetwork_ReadConsole (&51443)
<= R0 = console node

Reads the console node.


HereticNetwork_SetNetOptions (&51444)
=> R0 = number of tics
   R1 = backup tics (flag)

Sets up particular network options.


NOTE: These SWIs and commands should not be relied on, and may change without
notice. The SWI block is registered.


Disclaimer
----------

The author accepts no responsibility for any problems which this application
may cause or loss of data resulting in its use. This application is Freeware.
This means that it may be distributed, so long as no charge other than
copying costs are charged for it. The copyright remains with myself (Justin
Fletcher).


Contact
-------

Network Drivers:

E-Mail : Heretic@thevillage.ndirect.co.uk
IRC    : On #Acorn as Gerph
Tel    : (01842) 812276

Snail Mail :
    Justin Fletcher
    Galadriel
    17b Cromwell Road,
    Weeting,
    Brandon,
    Suffolk.
    IP27 0QT


Acorn Heretic:
  
E-Mail : Heretic@rcomp.co.uk
Tel    : (+44) (0)1925 755043

Snail Mail :
  R-Comp Interactive
  22 Robert Moffat
  High Legh
  Knutsford
  Cheshire
  WA16 6PS
  England


History
-------
Version 1.00 : 18 Jun 1998
               First version written
               Some people want the moon on a stick...

Version 1.01 : 20 Jun 1998
               Options window added, fixed a few minor bugs.
               Poetry skills not required (or used!)
               'Problems' section added.

Version 1.02 : 21 Jun 1998
               Main launcher unchanged, updated module should get rid of the
               'Pooh' bug, and I've also added a new *Command - *HereticNoPolling
               Syntax: HereticNoPolling [0|1]
               0 enables the polling whilst the setup packets are sent out,
               1 disables polling whilst the setup packets are sent out.
               
               The latter allows you to play with the game in Network mode
               without actually having a network.
               
               No problems have been observed with Heretic killing applications
               /except/ during startup if Heretic cannot claim enough memory.

Version 1.03 : 22 Jun 1998
               Added 'No resolver module' code. Fixed bugs in the module which
               caused it to abort with stack problems during start up.

Version 1.04 :23 Jun 1998
               Added !SiteEdit application to provide a list of aliases. It's
               nice when your old applications have been so well thought out
               that they can just be bolted in to the new ones to make them
               more useful :-)
               Added !Help support (well, actually added the details).
               Incorporated Andrews changes to the !Help file to my master.
               Added details about the sites menus.
               Added details about the options window.

Version 1.05 : 24 Jun 1998
               Intelligent IP address finder added. Checks all currently known
               system variables for IP addresses. Actual ordering is :
                 Inet$Hostname [+ Inet$LocalDomain]
                 Inet$EtherIPAddr
                 Inet$EcoIPAddr
                 Inet$SerialIPAddr
                 VTiIP$Address
                 Inet$LocalAddr
               These may be in hex, decimal, dotted IP, or FQHN.
               Simplistic checks are used to identify them.
               Documented SWI and commands supported by the HereticNetwork
               module.

Version 1.06 : 27 Jun 1998
               Disabled decimal IP addresses...

Version 1.07 : 14 Jul 1998
               How to set up a null modem connection details added to the
               !Help file - no significant changes made to the program.

Version 1.08 : 04 Oct 1998
               Update to driver module. Should make life more reliable now.
               Removed note about not intending the program to run on non-
               RISC PCs.
               Corrected missed words in !Help file. Updated the problems
               section.
               Updated email address.

Version 1.09 :11 Oct 1998
               Updated for new network specification. This means restarting
               network games will now be more reliable.

Version 1.10 : 28 Dec 1998
               Updated for Heretic
