
                        Flight Unlimited Log Utility
                               Version F1;4S
                        ----------------------------
                        Jesper Hansen      July 1995
                             CIS:  100335,3165
                        internet:  jeha@hk.enator.se
                        ----------------------------

                        Contents

                            Disclaimer
                            Requirements
                            Installation
                            Files in Archive
                            What will it do ?
                            How to do it
                            Format of the log file
                            Version History
                            Comments and suggestions


        

        Disclaimer

        This program is a Public Domain program. You are allowed to
        freely use, copy and redistribute the program, and the docu-
        mentation, PROVIDED :

                - that you make take no money for doing so, other
                  than a reasonable copying/diskette fee,
                - that you redistribute the archive file in its
                  entirety, including this copyright/licence notice,
                  and
                - that you do not modify any of its contents.

        This software is the property of the copyright holders.

        This software is provided "as is", and I assume no responsi-
        bility for any damage or injury resulting from its use, whether
        direct or indirect.


        Copyright (C) 1995, Jesper Hansen, Sweden.  All rights reserved.


        


        Requirements :

                If you can already run Flight Unlimited on your PC, you
                can also run FULOG !

                The program has been designed and tested with the log file
                format used by Flight Unlimited Version F1;4S. It has been
                designed to be upgradable by simply adding data to the
                program data files.

        


        Installation :

                 As you have already unpacked the program, we can skip
                  that part.

                 Copy all files into the ..\LOGS directory under the
                  directory where you installed Flight Unlimited.

                 Done !

        


        Files in Archive:

                The FULOG.ZIP file should contain the following files :

                         FULOG.EXE     - Executable program
                         FULOG.CPP     - Program Source
                         PLANES.FUL    - Planes data file
                         AIRPORTS.FUL  - Airports data file
                         LESSONS.FUL   - Lessons data file
                         README.TXT    - This file

        


        What will it do ? :

                The FULOG program gives you a more detailed view of the
                log file created by Flight Unlimited.
                You can Include or Exclude specific planes, airports or
                flight dates and modify the listing to see only those
                fields you are interested in.
                It will give you the flight time totals of the listed
                entries as well as the total logged flight time.
                It will also give extended statistics on the use of each
                plane and airfield and will give you detailed information
                about your flight lesson status and score.

        

        How to do it :

                Easy, just run the program.

                The command syntax :

                        fulog [-options] [filename] [-options]

                note that options can be placed either before or after
                the filename, and can be prefixed with either '-' or '/'.

                filename are the name of a Flight Unlimited pilot log file.
                If no filename are specified, 'PILOT000.LOG' will be used
                as default.

                Options :

                    -i<string>[,string]...  - include only fields contai-
                                              ning the given strings.
                    -e<string>[,string]...  - exclude fields containing
                                              the given strings.
                    -s[dpiatc]              - skip the fields indicated.
                                              (d=date,p=plane e.t.c.)
                    -t<n>                   - include only entries of the
                                              given type.
                                              Types are :
                                                1 - Lessons
                                                2 - Solo Flights
                                                3 - Hoops Courses
                                                4 - Certifications
                    -d                      - display extended statistics.
                    -p                      - pause on each screen.
                    -f                      - skip delay at program start.
                    -? or -h                - display program help.


                The program output can be redirected to a file or printer
                with the DOS redirection character '>'.


        


        Format of the Log File :

                This documentation on based on the results of my own
                debug sessions.
                If any of the information is not correct, you have only
                me to blame, not Looking Glass Technologies.
                The information is not complete at this point, as a number
                of entries in the log file are unknown, but they are not
                of any use to the log program (I hope).


                The log file is in two main parts - a header and a number
                of log records.


        Header
        ------

                Offset      Contents      Length    Type
                 (hex)                    (dec)
                 0000       Pilot Name       40     Zero terminated string
                 0028       Index Table    1024     dword's
                 0428       Unknown        1536     ?
                 0A28       Last index        4     dword
                 0A2C       ?                 4     ?
                 0A30       Terminator        4     dword

                The Index table are a table of 256 dwords, each containing
                the index of the first record of each record type.
                Known record types (hex) :

                    01 - Lessons
                    02 - Solo Flights
                    03 - Hoops Courses
                    04 - Certification
                    80 - Lesson Scores
                    81 - Program Settings
                    82 - Personal Data
                    83 - not sure yet

                Last Index are the index of the last used log record in the
                file. There might be some more records, bu these seem to be
                some empty list for the rest of the log page or something.


        Records
        -------

                All records contains the same sub-header :

                Offset      Contents      Length    Type/Use
                 (hex)                    (dec)
                 0000       Record Type       1     byte
                 0001       Next same         4     dword
                 0005       Previous same     4     dword

                The next and previous fields contains the index of the next
                or previous entry of the same type.
                For the record types 80,81,82 and 83 these fields are set to
                -1 (0xFFFFFFFF).

                First the special records :


        Record type 80  Lesson Scores

                Offset      Contents      Length    Type/Use
                 (hex)                    (dec)
                 0000       Subheader        9      dword's
                 0009       Lesson Score   140      words
                 0095       Unknown        107      ?

                The Lesson scores for the currently 35 different lessons,
                are stored in each word as lesson_score * 10.
                This means that a score of 8.3 is represented by the value
                83 (or 53 hex). Lessons in which you do not interactively
                participate, are given a score of 9.9 ( just like we get
                on all other lessons, right ? ).
                Note that the Flight Fundamentals are lesson number 35 !
                Also note that lesson number 34 does not exist !, and
                contains the score 0.0 !

                The Unknown field contains some values which I have not
                yet determined. These seems to change a lot. Perhaps some
                checksum or log/score validation ?


        Record type 81  Program Settings

                Offset      Contents      Length    Type/Use
                 (hex)                    (dec)
                 0000       Subheader        9       dword's
                 0009       Unknown        247       ?


        Record Type 82  Personal Data

                Offset      Contents      Length    Type/Use
                 (hex)                    (dec)
                 0000       Subheader         9      dword's
                 0009       Pilot Sex        40      Zero terminated string
                 0031       Pilot Height     40      Zero terminated string
                 0059       Pilot Birthday   40      Zero terminated string
                 0081       Unused          127      ?

        Record Type 83  Unknown Record Type

                Offset      Contents      Length    Type/Use
                 (hex)                    (dec)
                 0000       Subheader         9      dword's
                 0009       Unknown         247      ?

                I don't know what this is yet. My log file contains the
                following data (log files with fewer flight contains less
                entries) :

                    00 00 6F 18
                    00 00 6C 18
                    00 00 6E 18
                    00 00 6A 18
                    00 00 6B 18
                    00 00 6D 18         ; 6 entries ?
                    00 00 00-00         ; and then zeros for the rest


        Record Type 01-04   Logbook Entries

                Offset      Contents      Length    Type/Use
                 (hex)                    (dec)
                 0000       Subheader         9     dword's
                 0009       Next Entry        4     dword
                 000D       Prev. Entry       4     dword
                 0011       Date of Flight    4     UTC date format
                 0015       Flight Duration   4     Seconds
                 0019       Plane Used        2     word
                 001B       Plane Designat.   6     Zero terminated string
                 0021       Flight Comment  128 ?   Zero terminated string
                 00A1       Unused            4     ?
                 00A5       Airport used      2     word
                 00A7       Maneuver/Group #  2     word
                 00A9       Award flag        2     word
                 00AB       Certificate #     2     word
                 00AD       Unused           83     ?

                The next and previous fields contains as in the subheader,
                the index of the next or previous entry in the log array.
                Termination of the list are indicated by a value of -1
                (0xFFFFFFFF).

                Date of Flight are in UTC format i.e. the time since the 1'st
                of January 1970.

                Planes Used can currently be one of the following values :

                    0 - Extra
                    1 - Bellanca
                    2 - Pitts
                    3 - Sukhoi
                    4 - Grob

                Airport Used can currently be one of the following values :

                    0 - Denali
                    1 - Sugarloaf
                    2 - Sedona
                    3 - Springfield
                    4 - Skybryce
                    5 - Dinan

                Maneuver/Group Number, Award flag and Certificate # are
                used together. If given a certificate, the Award flag flag
                is 0, and Maneuver/Group Number contains the number of the
                lesson completed. If given an award, the Award flag is 1
                and Maneuver/Group Number contains the number of the Lesson
                Group completed. In both cases, Certificate # field contains
                some internal number.


                Well, that's it. If you go debugging on your own, let me
                know about any new findings.



        


        Version History:


                 Version F1;4S, July 1995
                         Initial version.


        

        Comments and suggestions :


                I'd be happy to hear of any improvements you'd like to see,
                as well as any bug reports.  This being the first release,
                there will probably be one or more of these nasty creatures
                sneaking around.

                So, comments welcome.

                        Send them to :

                                Jesper Hansen
                                Compuserve  100335,3165
                                Internet    jeha@hk.enator.se

                                Or snail mail to :

                                Takpannevagen 183
                                186 36 Vallentuna
                                Sweden


        


