AGPPerf V0.5h
Public Release Beta Version
3 October 1995
by Grant Reeve
reeve1@cs.waikato.ac.nz
ABOUT THIS VERSION
I finally got sick of not releasing this software, and people keep asking for
copies to play with, so I decided to release the current version I am up to in
development, to let everyone be happy. When my exams and other uni stuff
finish soon, I will then be able to sit down and produce a nice proper full
release version. This full version will be shareware (probably about 5 UKP
registration), but completely uncrippled for those of you who can't part with
any of your precious money :)
OVERVIEW
This program is based fairly loosely on the PC version of GPPerf.
It records telemetry of your F1 car as you drive around the track in F1GP, and
allows you to then save it to disk for viewing with some other displaying
utility (ie: GPDisplay)
It also puts some cute extra little thingies on the dashboard.
INFO
How is the info formatted?
Well, F1GP stores the track as a list of segments. These segments are
approximately 16 feet, or 5 meters, apart. AGPPerf records info about the car
as it crosses the start line of the current segment the car is on. These
segments are numbered from 0 (the start line) to N, where N is the maximum
segment for a track. Pit segments are numbered differently, but AGPPerf
doesn't record pit segments, so that doesn't matter. A .perf file of 1 lap
will contain N+2 segments: 0 to N, plus another 0 segment to finish the lap
off. The first 0 segment of a recording will have a time of 0:00.000, and
subsequent 0 segments will contain the lap time of the lap just driven.
How many segments are there?
This depends on the track. Here is a table, containing the highest segment
number for a track (ie: the segment number of the segment before the start
line)
Circuit # Segments
--------------------------------------------
Phoenix - United States 00 767
Interlagos - Brazil 01 887
Imola - San Marino 02 1032
Monte-Carlo - Monaco 03 699
Montreal - Canada 04 913
Mexico City - Mexico 05 904
Magny Cours - France 06 875
Silverstone - Great Britain 07 1056
Hockenheim - Germany 08 1395
Hungaroring - Hungary 09 813
Spa-Francorchamps - Belgium 10 1416
Monza - Italy 11 1188
Estoril - Portugal 12 891
Barcelona - Spain 13 972
Suzuka - Japan 14 1202
Adelaide - Australia 15 803
What information does AGPPerf save?
First, there is the file header:
typedef struct {
UBYTE version; // .perf file version (0)
UBYTE revision; // .perf file revision (2)
UBYTE circuit; // the track being driven (0-15)
UBYTE car_number; // the number of the car being recorded (1-40)
UBYTE front_wings; // front wing setting
UBYTE rear_wings; // rear wing setting
UBYTE tyre_compound; // tyre compound being driven (0=A..3=D, 4=Q, 5=W)
BYTE brake_balance; // brake balance
UBYTE gears[6]; // the gear ratios
UWORD hp; // horse power ($4000=716 HP)
ULONG ent_number; // number of PERF entries saved in file
UWORD ent_size; // size of a PERF entry
} PERF_HEADER;
Then one of these PERF entries is saved for every track segment that
is crossed:
typedef struct {
UWORD track_segment_id; // segment id of the bit of track crossed
ULONG time; // time (in milliseconds) at the start of the seg
UWORD revs; // revs
UWORD speed; // speed, ($40 = 1 foot/s)
UBYTE gear; // gear (1-6, 0=Neutral, -1=Reverse, 7=Spin)
UBYTE user_input; // bit 0=forward, 1=back, 2=left, 3=right
WORD angle; // angle the car is facing (0=0 deg, $8000=180 deg)
LONG car_x_pos; // x position of the car
LONG car_y_pos; // y position of the car
} PERF;
USAGE
First, make sure that the f1gp.library file is in LIBS:.
Then, run F1GP, then AGPPerf with the following template:
AGPPerf [outputfilename] [quiet] [datamem <size>] [winpos <x> <y>] [surflight] [fullbar] [redcross]
outputfilename
This is the name to save the output file to. Default is "out.perf". Since a
filerequester is used to save with, this is not important, unless AGPPerf
can't open the ASL library.
quiet
This tells AGPPerf not to print anything to stdout.
datamem <size>
This tells AGPPerf how much memory to allocate for recording data to, in KB.
Default is 32K. The longest track (Belgium) needs 31218 bytes to save a lap.
winpos <x> <y>
This tells AGPPerf where to put it's window on startup. Positive values will
offset the top left corner from the top left of the screen. Negative values
will offset the bottom right corner from the bottom right of the screen.
ie: winpos -1 0 will put the window in the top right corner.
surflight
This turns the surface lights off.
fullbar
This turns the full bar off.
redcross
This stops AGPPerf from setting the red cross in the pitlight square.
KEYS
Keys that work in the AGPPerf window:
esc - quit
This quits
s - save as
This brings up an ASL file requestor, if the ASL library is there, to ask
you where to save the current perf. If ASL isn't there, it will just save to
the default file name, or the name supplied on the command line.
Once you are in the cockpit, you can use the following keys:
F10 - Stop
This stops any recording.
F9 - Start
This clears the buffer, then starts recording immediately.
F8 - Autostart
This clears the buffer, then waits until you next cross the start/finish
line, then starts recording from there. This is the key I usually use.
If you have done a particularly cool lap, and want to save it, you just pause
the game, press escape, then using left amiga-m, go back to workbench and save
it, or use GPDisplay to grab it from memory.
NEW DASHBOARD DISPLAY
AGPPerf uses the "lights" on the left hand side of the dashboard to indicate
it's current state. The old use of these lights, indicating the opposition
driver skill level, has been replaced. Also, the red cross pit light is used
too.
(surface lights) Lights
outside wheel = O O = status of AGPPerf
inside wheel = O O
_ O
// O
full bar = // O
-
status of AGPPerf:
This light has the following meanings:
grey = not recording, and buffer is empty
white = not recording, but something is in the buffer
red = recording has stopped, and the buffer is full
green = recording
blue = autostart mode
outside/inside wheels (surface lights):
These lights indicate the surface that the outside/inside wheels of the car is on.
grey = road
white = low curb
yellow = high curb
red = grass (naughty!)
full bar:
This bar shows how full the AGPPerf record buffer is.
Red cross pit light:
This will come on if you touch the grass at any time. This light is a good
indicator that you have done a naughty lap. It will get cleared when you cross
the line.
DISCLAIMER
I hereby disclaim any responsibility if AGPPerf crashes, or formats your
harddrive, eats up your pet bird, causes the extinction of mankind, etc. etc.
BUGS
There is a bug, that AGPPerf will show it's dashboard stuff all the time, even
if you are outside the cockpit, or in another car.
If at some point a small window randomly appears with a flashing message
saying "Ha ha! I am a bug from AGPPerf!" then you have a different version to
mine and could you please send it to me.
If you find a bug (in AGPPerf), then tell me. I will then make an attempt to
try to fix it, if I'm not too busy elsewhere.
OTHER STUFF
This program uses Oliver Roberts' f1gp.library (c) 1995.
I wish to thank the following people, for giving me ideas and info and stuff:
Rene Smit, Trevor Kellaway, Oliver Roberts, Edo Nijmeijer, Rob Buis.
FINAL COMMENT
You WILL find this program useful. If not, then I will beat you up. :)
|