Matti Laitinen's info TRACK EDITING PROJECT The aim of this project is to help people making new tracks for F1GP or maybe even make a working track editor. If you want to contribute to this project, please email any info/ideas etc. to f1gp@alphaf1.com! Here is what I've discovered so far: Note! * the offsets on this page are in decimal format byte = 1 byte = 8 bits (example: 0xAA) short = 2 bytes = 16 bits (example: 0xEE84) long = 4 bytes = 32 bits (example: 0xE2D6AADD) Open F1CT??.DAT to a hex editor. 4096: always 0x1010 (short) 4098 short = 4102 short 4104: offset checksum read as short and add 4112 (=0x1010) => checksum offset = file_size-4 4108: track data offset read as short and add 4112 (=0x1010) example: monza 8606+4112=12718 Track data ========== 28 bytes structure, same as in GP2 example: +0 angle start (short), angle=(signed integer)/(65536/360)=(signed integer)/(182.0444) +2 height start (short) +4 start Y +6 start Z +8 start X +16 right verge width at track sector 0 (unsigned byte) +17 left verge width at track sector 0 (unsigned byte) After this structure begins track sectors: * Track sector 0 commands defination * Track sector 0 attributes * ... * ... * Track sector n commands defination * Track sector n attributes 1. Track sector commands - same as in GP2 - example: * 0x80 object: -> arg0=distance from start of sector, arg1=object description offset - command library documentation needed - 0xAC 5 args - 0xAA 4 args - 0x81 2 args - 0x99 4 args - 0x82 2 args - 0x85 3 args - 0x95 2 args - 0xAB 3 args - 0x90 2 args - ... Note! Command number and arg0 are always unsigned byte arg1, arg2,... are always short type Note! reading order: arg0, command number, arg1, arg2, arg3, ... 2. Track sector attributes - Always stored in a 10 bytes structure (same as in GP2) +0 sector length (unsigned byte), 1 unit=16 feet=4.87 metres +2 sector arc (short), angle=(signed integer)/(65536/360)=(signed integer)/(182.0444) +4 height (short) +6 flags (short) kerbs, road signs, etc. (probably same as in GP2 ???) +8 right verge width (unsigned byte) +9 left verge width (unsigned byte) Track data ends to 0xFFFF (short) ----------------