From both of us to all of you!

This is a simple RC Model Airplane -simulator for everybody who is interested
in practicing his/her RC-piloting skills safely. No previous skills are needed.

This program is not shareware: It is freeware. You may and you are encouraged
to copy this package freely to all of your good friends. There are no fees or
costs of any kind. Source code is also available by request to anybody.

We hope you have a good time with this simulator. Of course it is not
comparable to commercial products such as Dave Brown's, but it's fun and
it's here. Our main intention was to create a practicing tool especially
for controlling the plane when it's flying towards you. You know, to get
the "mirrored" controlling to the backbone. It took only three 8-hour days and
when it was ready, we decided to put it here to the net. Viva Interglobal
Sim-Exhange!

Let us know what you think of this! Our email-addresses are in the end of this
file. Furthermore, if you would like the source code (Borland Turbo C), we can
mail it to you. Even furthermore, if you have fast (=direct) routines for
drawing boxes, triangles and lines to EGA or VGA, mail them to us and we'll
make this babe faster. Even even furthermore, if you have done or just have a
better RC-simulator, mail it to rec.models.rc so that we can all enjoy it. Yes?


Contents of this package:
[v1.3 superseded:  see below]

RCSIM.ZIP       -Compressed file containing the following files: (use PKUNZIP
                 to decompress)

RCSIM.EXE	-Executable program file, emulates math co-processor (=slow).
RCSIM87.EXE     -Executable program file, use this if you have a 387 or a true
                 486 (=fast).
EGAVGA.BGI      -Borland's graphic routines needed by the exe:s (=slow).
                 Freely copyable.

README.TXT      -This file, unformatted text.
README.WRI      -Same file, nice layout.

TRNER486.PLA    -Parameter file, use with a 486 (=Trainer486.Plane)
TRNER386.PLA    -Parameter file, use with a 386 (=Trainer386.Plane)


Flying:

Okay, let's start flying. You start the program by first getting rid of all
TSRs and other background crap and then typing at the prompt:

	> RCSIM87 TRNER486.PLA

That will start the program "RCSIM87" with the parameter file "TRNER486.PLA".
Program RCSIM87 requires a math co-processor. The version that doesn't is
plain RCSIM.EXE. If you have a 386 use "TRNER386.PLA" as the param-file. If
you have a 286 you can cry. In our thorough speed-tests we have noticed that
speed is adequate when running the 87-version, but a little too slow with
plain RCSIM. In other words: if you have a true 486 (which has a built in math
co-processor), congratulations.

If program won't start, it propably can't locate EGAVGA.BGI. Copy it to the
same directory with RCSIM.EXE and restart.

In the simulation we have a hi-wing red-white trainer-looking plane with
aileron and elevator control, a blue runway and a few gray reference poles for
sensing the speed. The ground is gray because it is ice. The sky is gray
because the our random weather-generator always creates overcast weather.

You become airborne by hitting full throttle ('key S') and pulling gently on
the stick (a couple of '2':s). You make turns with ailerons (keys '4' and '6')
and stall by setting the motor to idle and pulling on the stick. You know all
this...

If you land too hard the plane will crash and act funny. You have to hit 'i'
(=initialize flight position) to re-fly. You can hit 'i' anytime, for example
if the plane flew too far and you can't get it back. (Too bad there's no
'i'-button on a real transmitter.) Try to land on the runway, because otherwise
the program will use more memory and slow down radically (nah, just kidding).

In the upper left-hand corner is red throttle indicator, a line that grows when
you, as a pilot, apply more throttle. In the middle of the screen, right next
of the throttle indicator is the stick position indicator, also red.


Keyboard controls:

'2' - Pull stick (nose up (if not inverted flight)), pitching
'8' - Push stick, pitching
'4' - Stick left, rolling
'6' - Stick right, rolling
'5' - Center ailerons, no more rolling
(Hit 'NumLock' and use arrow keys on numpad)

'a' - Increase throttle (+10%)
'z' - Decrease throttle +(10%)
's' - Full throttle (100%)
'x' - Idle mode (0%)

'i'  - Initialize flight position, i.e. restore flight e.g. after crash
'q' - Quit this one now

Keyboard controls are also on the intro-screen:


More on the parameter file:

The parameter file contains seven co-efficients, which control the
charasteristics of the airplane. If you modify these values the plane flies
differently. This description is also in the .PLA-file itself. Here's an
example contents of a PLA-file:

0.005       (Engine power coefficient)
0.01        (Air drag coefficient)
0.001       (Wing lift coefficient)
0.01        (Gravity coefficient)
0.2         (Aileron throw coefficient)
0.1         (Elevator throw coefficient)
256         (Viewplane distance)

These values are used inside the program to calculate the flying
characteristics of the airplane. The values have no reference to real world or
to each other. None what so ever. Should that kind of reference appear, it will
be completely coincidental and we take no responsibility for it. If you want
to experiment with these values, make small changes and see what happens.

There are some useful ways to deal with these numbers, however. For example if
you want to reduce the simulation speed to half, just divide each number by 2
(except the last number). That is, if you should own a very fast machine.

The last number is the view plane distance and it kinda means what sorta lens
you have in your eyes looking at the airplane. If you decrease this value, the
picture will look more like seen through fisheye-lens. And if you increase it,
the picture will be seen through tele-lens. You can change this value at
runtime by pressing '+' and '-' -keys. A plus doubles the value and a minus
halves it (this is called zooming, z-o-o-m-i-n-g).

Here are the values again with their meanings:

0.005 (Engine power coefficient) How powerful is the engine.
0.01  (Air drag coefficient) How much does the air drag effect.
0.001 (Wing lift coefficient) How big a lift the wing has. A zero value
	  would mean a symmetrical airfoil with no lift.
0.01  (Gravity coefficient) How hard does the earth suck. A zero here would
	  mean you're flying your plane in space.
0.2   (Aileron throw coefficient) How much do the ailerons effect.
0.1   (Elevator throw coefficient) How much does the elevator effect. A zero
	  value here would mean a pretty boring flight.
256   (Viewplane distance) how close (in some peculiar units) is the
      viewplane. A zero value here probably means divide by zero and
      therefore a program crash.


Closing:

We once again hope you will like our little work and maybe can improve your
flying. And like we said in the beginning, let us know what you thought of
this one! Your comment is important to us! You are important to us! We just
might improve this!


	Happy landings, 

				Mikko Oksalahti & Harri Rautio

				OKSALAHTI@HYLKN1.HELSINKI.FI
				HRAUTIO@HYLKN1.HELSINKI.FI


And to the end, a little quiz for all you spanish ablers:

        "Donde esta perro pequena?"

v1.1 Toad Hall Tweak, 27 Apr 95
  Thanks to Mikko for sending me the source.
 - Added joystick routines from C Snippets (SNIP9503.ZIP).
   Seems to work just fine with my trusty old Kraft Thunderstick.
	 Strange .. the joystick's throttle (a sliding bar on its side)
   gets picked up just fine in the test code, yet will NOT respond
   in the ReadKeyboardControls() function below (where I integrated
   the joystick functions).
   So the joystick throttle is disabled for now.

   While I was at it, I enabled my joystick buttons to control Zoom.
   The trigger (button 1) zooms in, the bomb button (button 2) zooms
   out, and both of them together reset view distance to normal.

   In ANY event, this sucker is VASTLY easier to fly (even on my
   486-33) than it was with keyboard alone!  I've done a minor bit
   of optimizing here and there (mostly consolidating redundant
   multiplies), but nothing system-speed specific.  So I have no
   idea how it'll run on an 8088 or a Pentium :-)

   The three executables now in the package are
	RCSIM.EXE		8088 code, math emulation, speed-optimized
	RCSIM087.EXE		8088 code, 8087 enabled, speed-optimized
	RCSIM387.EXE		80386 code, 80387 enabled, size-optimized

   They all seem to fly equally well (on my 486-33 DX anyway).

   Thanks again, Mikko and Harri, for a great simulator!

v1.2 28 Apr 95
 - Found problem with joystick (hardware problem!), enabled.
 - Minor tweaks, deleting old rem'ed out code.
 - Added "speed" to debug display (since we have no engine noise to
   give us feedback on aircraft speed).  Works great!
 - Increased aileron effectiveness in TRNER486.PLA, renamed
   changed file to TOAD486.PLA.  (Aircraft rolls nicely now.)
 - Still unhappy with nose-down trim, but that's in the math,
   not the aircraft. Trim your joystick unless you want to tweak
   the joystick-conversion figures.
 - Zero, zip, nada dihedral in this aircraft.  Despite appearances,
   the aircraft will NOT roll back to level like a normal trainer:
   you must fly it back.  Which is ok if you're used to stunt ships.
   And not ok if you're not :-)  On the plus side, that makes the
   aircraft very stable when inverted.
 - Now we need landing gear :-)  And flaps.  And engine sound, with
   Doppler effect :-)

v1.3, 29 Apr 95
 - Fixed bug in stick position indicator (my fault)
 - Cleaned up throttle code, joystick constants.  Less WHAG now.
 - Adding speed value display in any case.
2 May 95
 - Added drag when on ground.  (Looked silly before when landing.)
 - Still doesn't look right when it crashes. (Spins too long.)
   Obviously "airspeed" is not bleeding off rapidly enough.
 - Added altimeter (kinda).
 - Wing length now varies according to wing lift coefficient.
   The more lift, the longer the wing, horizontal and vertical
   stabilizers.  (We now have gliders!)
   Just guessing at the constants now (in RC_FLY3.C), but seems
   to look just fine.
 - Hard-coded in some glider-related things in RC_FLY3.C
   - If it's low-powered (e.g., a glider, it'll be hand-launched
     (Not enough power to get off the ground).  This changes
     launch aspect entirely!
   - Added GLIDER.PLA to the package.  It shows some suggested
     values (long wings, low power, less aileron throw, less
     gravity to show "lighter" aircraft).  GLIDER.PLA flies very
     nicely indeed on my 486-33 DX!  (I learned to fly RC on a
     2-meter RC glider I modified with an 0.10 engine, so I oughtta
     know :-)
     Added CLIPWING.PLA to show the other end of the spectrum:
     a speed ship!

Received approval from Mikko Oksalahti to release.  (See included msg.)

Per their message:

Copyright (c) 1995 Mikko Oksalahti and Harri Rautio All Rights Reserved

However, source and executable may be freely distributed.
Note the operative word "free" .. NO, repeat, NO fee may be charged.
(This does not include the usual freeware/shareware CD-ROM costs.)

v1.4, 20 May 95
 - Bug reports from two kind users:  with no joystick, they had no
   keyboard control at all!
   Dumb of me:  of course, if there's a game port in the system, it'll
   report a "joystick" present .. but the port values will never change!
   This overrides any keyboard control input!
   Also not reported, but just realized:  Some joysticks do NOT have
   a throttle, yet the gameport may indeed be reporting such a thing!
   Fixed via:
   - A new line in the .PLA aircraft file to disable joystick
     entirely ("F" means no joystick, anything else means do joystick test).
   - Ditto to disable throttle entirely.
   - 'j' command on the screen menu.  Press "j" to toggle joystick on
      and off.  Off overrides any system joystick sensing.
   - 't' command on the screen menu to toggle throttle.

 - Considered (and wrote) procedure to detect joystick limits and center.
   But until I get more feedback that the default values currently used
   are way out of line .. why bother hassling the user with a "Waggle
   your joystick to all limits" routine?  We'll just assume the start-up
   joystick settings are "centered", that all joysticks produce output
   in a range from 0 to 80, and let it go at that!

To do:
 - Function to zero joystick and establish max limits.
 - Some sort of sound (with Doppler).  Include crashes :-)


David Kirschbaum
Toad Hall
kirschd@hq.ljl.com
