Setup 08/03/95
==============

- Added joystick support to the control subsystem.  You need to call
CONTROL_CenterJoystick with appropriate function pointers to properly
center the joystick.  Moved Mouse_Sensitivity into the control library
because you can now save the setup file from within your own game...see
below.

- Totally overhauled SCRIBLIB.  It now retains comments and all it's other
data, so that you can call SaveScript from your own program (see CONFIG.C
in TEST) and it will save the script with the few changes you want to make
it. All ReadScript functions have become GetScript functions and all
WriteScript functions have become PutScript functions.

- Added MAXVOICES to common.h so when you merge your common.h into mine,
take note of it.

- Fixed a bug with sound setup and the Sound Scape

- Added Joystick port to the setup joystick menu

- Added Mouse Sensitivity to the setup mouse menu

- Added another controller type, keyboard_andgamepad

- Put in support for multiple configuration files that actually works.
You'll see the 'Change Setup Filename' option on the main menu which is
equivalent to a 'Name' function.  Changing the setup file name will change
the filename of the setup file when you actually save or launch a program.

- Put Mouse Sensitivity into the control sub-system you need to call
CONTROL_GetMouseSensitivity (returns an int32 [0..65535]) and
CONTROL_SetMouseSensitivity (takes a value [0..65535]).

- If you look in CONFIG.C at ReadSetup and WriteSetup, you may draw a
conclusion I just made.  If you want to store game specific data in the
setup file, you can.  SETUP.EXE will ignore all information it does not
use but will save out all information when saving the setup file.  What
this means is that you can use the simple interface of
GetSetupString,GetSetupNumber and PutSetupString,PutSetupNumber to store
all the data you need to.

Setup 07/22/95
==============

Here are a bunch of notes on integrating setup and controls into BUILD
games...

- Replace all hard-coded scancodes and #defines that deal with game
controls with their respective enumerated gamefunc_xxxxx.  You generate
this enumerated type list by editing function.ini and defaults.ini and
running MAKEHEAD.EXE, which makes function.c and function.h

- You need to replace all kbstatus stuff with KB_KeyPressed(scancode) so
you can use my keyboard handler which the controls use.  It also
translates text scancodes into actual numbers (see CONFIG.C).

- Examine where you use kbstatus stuff and decide if it is really
necessary or whether or not it would be better to use a button instead, so
it is not hard coded.  Also take a look how my KB_GetCh interface works in
cheats to see if that might not work better for you.

- If you do use kbstatus stuff and then zero out the kbstatus you need to
replace that with KB_ClearKeyDown(scancode) but make sure that key does
not interfere with a control key.  Controls can be 'cleared', but the
clearing is done through harmless masking and does not alter the actual
state of any of the buttons or key presses.

- You need to register your buttons, see the bottom of game.c

- In order to get an update on button status call the function
CONTROL_GetButtonInput.  It will update the BUTTON and BUTTONHELD macros.

- In order to get input from another device such as the mouse or joystick
call CONTROL_GetGameInput which fills in a ControlInfo structure
containing six degree of freedom deltas.  Since the control system is
designed for any controller, the mouse's x comes out as dyaw and the
mouse's y comes out as dz.  The data coming from this function is
normalized to be 0x4000 for a large move and will not exceed 0x7fff.
look in getinput in player.c for more info

- For menu code, call CONTROL_GetUserInput which fills in a different
structure from which direction information and button info can be
obtained.  This virtualizes the controls you can use in the menu, so it
does not have to be limited to keyboard only.  Button0 is Enter or space,
Button1 is Escape. Look in probe in menues.c for more info on this.
Button1 is currently commented out in menues.c because it conflicts with
one of Todd's necessary game functions Escape.  I am working on a solution
for this as well.

- Processing input as in processinput.  Ken had a major screw up or
somebody did with the way the controls worked.  I need at least 2 bytes
for momentumx and momentumy each.  This increases the packet size for net
play but is definitely necessary.  You need to incorporate a scalar
friction system like the one in processinput for everything to feel nice.



Setup will change in a few ways in the next couple weeks, but as long as
you keep config.c and the setup code separate in game.c it shouldn't be
too hard to incorporate.  Currently you cannot save things like Mouse
sensitivity and Volumes to the setup file from the game.  I will come up
with a solution for this shortly.
