The INMOS Flight Simulator
The INMOS flight simulator is a multi-transputer, multi-player flight simulator written by Steve Ghee and Phil Atkin of INMOS Limited in 1987/1988. The code is designed to run on a system comprising of ten IMS T800 processors per player. Anything smaller will do no credit to the system, and, of course, no credit to Phil and Steve.
There is a detailed technical note about this program: 72-TCH-036 A transputer based multi-user flight simulator
It was a long-held wish to see this program in action. The adoption for the D7205A compiler environment was easy. A first setup where build on a B012 with a B419 graphic TRAM. The main problem was to find a working configuration with a 512x512 pixel signal and a modern flat screen. Finally, I gave up and the board went back into the cabinet.
But in 2016 I've rebuild the flight simulator system in a complete different way and now it runs great with seventeen T8 transputer autarkic in a single VME Box.
Basic survey
In this section the general properties of the flight simulator are explained.
Ground
The earth surface is built from a big squared ground plane covered with different colored rectangles and a runway with medial strip. This object has 87 polygons.
The borders are limited with the hills named after the cardinal points. North and south hills are built with 3 polygons - east and west hills only with one. The hills are not "solid", so you can fly through.
Aircraft and Missiles
There are three different airplane types: A chopper (16+4 "moving" polygons), the "standard" plane (12 polygons) and the x-wing (19 polygons).
Every plane can fire up to 2 missiles (5 polygons each).
The pilot can switch his view temporary short behind
the missile and steer it into the target. If a plane gets hit by a missile it will explode in a fireball build with 32 polygons.
A few fragments in the code indicate that a tower view and a flying object named Cray was planned but not realized.
Head Up Display
The instruments in the cockpit provide a lot of information about the flight situation for the pilot. These are:
- Three seven segment displays (left side, top down) for air-speed, ammo-status 0 and ammo-status 1.
- A squared radar map to see what is happening around/behind the aircraft. This includes ALL flying object.
- Two small numbers showing the play time in hh:mm:ss and the actual frame rate.
- Aircraft instrument (from left to right): Turn indicator (roll), attitude indicator (pitch), altimeter and a compass.
- A single seven segment display which shows the actual score of the player.
Why a transparent head up display has been realized is very clear to all which knows the Move2D instructions introduced with the T800.
Control Keys
8 ^ | 4<-+->6 | v 2 for roll/pitch control a ... to increase the velocity to max 1178 / 1178 / 798 (xwing/plane/chopper) d ... for decrease it to min 38 / 0 / -399 t ... turbo (for ~10s) to 4000 (max 20 times) v ... back to max velocity SPACE is for firing a missile (if not turbo, max 2) which has a speed of ~2200 s ... switch to/from missile control view
Original Setup
The installed graphic card was a B007, a B006 for the joystick interface and autopilots and probably a few B003 in an ITEM. A B004 is also mentioned to load the system. I believe that anywhere in my stock there is a report about this 4-player setup build for SIGGRAPH 87. I hope I will trip over it somewhere in the future to extend this section. Anyway - the B007 is the reason for the extraordinary screen resolution of 512x512.
My Setup
My setup consists of an IMS B016 and two IMS B014. Each B014 Slot is populated with a T800-25/1MB TRAM. The housing of the VME boards is an almost exploited Tektronix K1297. The inbuilt VME PC is running under Windows XP. You might be surprised about the fact that there is not graphic TRAM at all. The clue is, that the main memory of the T801 on the IMS B016 is shared with the PC. In short: The B016 creates a bitmap in memory which is displayed in a 512x512 wide window under Windows XP.
VME | | PIPE 0 . PIPE 1 . | B014 . B014 . B016 | | ----- | S0 | S7 | S0 S7 +--0--+ +--1--+ | +-----+ +-----+ | | | | | | | | | T2-1 USR 3-----0 RI0 3-P2.7---P2.6-3 DB3 | | SH3 3-P2.7--------- | | | | | | | | | | +-----+ +--2--+ | +--2--+ +--2--+ | T0 T1 | | T8 | T16| | | | | | | S1 | S6 | | S1 | S6 | +-----+ +--1--+ | +--2--+ +--1--+ | | | | | | | | | | | | AP1 3-----0 RI1 | | | Z | | SH2 3-P2.5--- | | | | | | | | | | | | +-----+ +--2--+ | +--1--+ +--2--+ | +--3--+ T7 T6 | | T9 | T14| --2 | | | | | | GFX | S2 | S5 | | S2 | S5 --1 | +-----+ +--1--+ | +--2--+ +--1--+ | +--0--+ | | | | | | | | | | T15| | AP2 3-----0 RI2 | | | X | | SH1 3-P2.3--- | | | | | | | | | | | +-----+ +--2--+ | +--1--+ +--2--+ | T5 T4 | | T10| T13| | | | | | | S3 | S4 | | S3 | S4 | +-----+ +--1--+ | +--2--+ +--1--+ | | | | | | | | | | | | AP3 3-----0 RI3 | | | Y 1-----2 SH0 3-P2.1--------- | | | | | | | | | +-----+ +--2--+ | +-----+ +-----+ T3 T2 | | T11 T12 -----
The original joystick interface has been removed. The flight control commands (which are single characters from the PC keyboard) are send down the boot link over the IMS C012 on the VME bus from the first B014. It is also possible to use a game pad controller for a more up to date experience. Nevertheless, I'm still a crummy pilot.
Performance
The actual speed is 20/21 frames per second. The value is shown below the play time in the head up display. Between the shader and the graphic transputer is a C004 link switch which reduces the link performance to 1380KB/s. So (4*1380*1024)/(512*512) = 21.56 is the maximum frame rate. But I'm sure that there is some remaining processing power to put some additional polygons into the simulation.
C:\d72uni\fs>rspy -L # Part rt Link0 Link1 Link2 Link3 0 T805G 25 510K 1275K ... 1381K 1 T2 17 ... 925K 811K ... 3 T2 20 ... 778K ... ... 7 T800D 25 1295K 1381K 1381K 1111K 8 T800D 25 1322K 1388K 1388K ... 9 T800D 25 ... ... ... 1381K 10 T800D 25 1381K 1381K 1428K ... 11 T800D 25 ... ... ... 1381K 12 T800D 25 1381K 1388K 1436K ... 13 T800D 25 ... ... ... 1381K 14 T800D 25 ... ... 1388K 1111K 15 T800D 25 ... 1381K 1381K ... 16 T800D 25 ... 1381K 1436K ... 17 T800D 25 ... 1388K 1388K ... 18 T800D 25 ... 1388K 1436K 1388K 19 T800D 25 ... 1381K 1388K 1388K 20 T800D 25 ... 1436K 1388K 1388K 21 T800D 25 ... ... 1381K 1322K 22 T801B 25 1381K 1381K 1388K 1388K