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 el 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