FIFA 18 - Save Editing Thread

Discussion in 'FIFA 18 Editing' started by Aranaktu, Jun 22, 2018.

  1. Aranaktu

    Aranaktu Club Supporter

    Joined:
    Mar 27, 2017
    Messages:
    255
    Likes Received:
    212
    Hey guys. Since I'm playing FIFA (2003) I was always curious why there isn't any save editor for this game? A few months ago I've decided to start reverse engineering a save file format in order to make a fifatracker website. I'll post here what I've found so far. FIFA 18 is pretty much already dead, but I'm sure it will be still useful in next game edition. Already I've managed to edit some basic stuff like transfer budget and player form. The biggest achivement is probably adding "Future Star" to current career. I'm also too lazy to make complete save editor, but I'm still open for cooperation, so if you want to make that kind of tool just PM me. :)

    First of all, FIFA saves are stored in "Documents\FIFA 18\settings". File name must start with "Career" keyword, and after that we have date of last save in format "yyyymmddHHMMss".
    Now let's open game save in hex editor and take a look at file format. Note that all values are stored in little-endian byte order.
    File Header - 0x66 bytes

    After file header we can distinguish 3 main career file sections .
    1. SaveType section - Sizeof: 0x338A3

    The most important thing here is CRC32 checksum located after "SaveType_Career\0". You need to recalculate it if you want to change anything in your career save. CRC32 checksum if calculated from offset 0x92 until the end of the whole file.
    Image:
    [​IMG]
    Tbh. I've no idea what is the rest of the data in this section. 99% of it are null bytes.

    2. Databases section - Sizeof: 0x5D4CB4

    In this section we have 3 fifa databases.
    First one contains tables with "career_" prefix.
    [​IMG]
    The second one contains more common and well-known tables like "players" and "teams"
    [​IMG]
    And the third one contains just a single table called "teamsheets"

    If you want to take a look at what's inside these databases you can use my https://gist.github.com/xAranaktu/96e40cb2287372bbbe405408485a87e4 to unpack them from career save. And then just open .db files with https://www.moddingway.com/file/45991.html. You will probably also need https://pastebin.com/sH1B3WVe file. So far I've not managed to run the save with edited database.

    3. Career data section - Sizeof: 0x48F80C
    Here we can find stuff like transfer budget, player statistics/morale/form, info about injuries. Basically, everything which is not stored in the databases. Most of the structures here have their own signatures.
    Structures that I've reverse engineered a little bit:

    tf003 - PlayersForm:
    [​IMG]
    Code:
    6 bytes - 'tf003\0' - Signature
    4 bytes - TeamID
    4 Bytes - Squad Size
    {
        4 Byess - playerid
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown
        4 Bytes - Unknown DATE
    };//Player array - Size=0x58
    
    rlctrk - Release Clauses
    Code:
    7 Bytes - 'rlctrk\0' - sign
    4 Bytes - Number of players with release clause
    {
            4 Bytes - PlayerID
            4 Bytes - TeamID
            4 Bytes - Release Clause
    };//Player array - Size=0x0C
    
    pmit1 - Competition Prize money

    Code:
    {
        4 Bytes - Unkown
        4 Bytes - Date
        4 Bytes - Money
        4 Bytes - Unkown
        4 Bytes - competition id?
            char pad[0x0C];
    };// Tournaments array - Size=0x20
    
    um001 - UnlockablesManager:
    Code:
    future star
    {
            1 Byte(?) - Unknown
        1 Byte(?) - Boolean?
        4 Bytes    - Arrival DATE - yyyymmdd
    }
    

    ubp01 - Club Finances

    sm015 - StoryManager?

    tm003 - mPlayerMoraleAlloc

    mp002 - MonitoredPlayersAlloc? - 0x650

    fm001 - FitnessManager

    rm001 - RetirementManager?

    dd002 - DeadlineDayTransferList

    tpm002 - TrainingProgressManager

    mi001 & ti001 - total shirts sold?

    se001 - avg attendance this season?

    fm001 - Injuries
     
    msrajjc2, Andreasmax and beta990 like this.
  2. bangus

    bangus Starting XI

    Joined:
    Sep 21, 2011
    Messages:
    5,413
    Likes Received:
    480
    Save editor has been available for two years now courtesy of Moddingway, here's my thread on how to use it to edit FIFA 18:

    http://www.soccergaming.com/index.php?threads/db-editing-tutorials-tips-and-tricks.6459905/

    Also, rinaldo created a tool which we used for years to open/edit the save file, that worked up til FIFA 16 I believe. And there was a save file hex-editing thread already, the FIFA 17 forum I think.
     
    Last edited: Jun 22, 2018
    beta990 likes this.
  3. Aranaktu

    Aranaktu Club Supporter

    Joined:
    Mar 27, 2017
    Messages:
    255
    Likes Received:
    212
  4. bangus

    bangus Starting XI

    Joined:
    Sep 21, 2011
    Messages:
    5,413
    Likes Received:
    480
    Okay, yeah I didn't see where you mention that in your write-up. Carry on.
     
  5. msrajjc2

    msrajjc2 Club Supporter

    Joined:
    Nov 4, 2015
    Messages:
    208
    Likes Received:
    83
    Great work @Aranaktu this is v interesting - thanks!
     
  6. fifaCCitiu.com

    fifaCCitiu.com Senior Squad

    Joined:
    Mar 28, 2003
    Messages:
    1,712
    Likes Received:
    48
    Location:
    Lecce,Italy
    Interesting. This is the type of thread that i like.

    About CRC is the standard CRC32 algorithm or a custom one? Have you tried to use all 0 as CRC? This sound strange but there is a possibility that it work.
     
  7. Aranaktu

    Aranaktu Club Supporter

    Joined:
    Mar 27, 2017
    Messages:
    255
    Likes Received:
    212
    It's standard CRC32 algorithm. And yes, all 0 are working. Thanks for that tip. :D
     
  8. Xsenus

    Xsenus Club Supporter

    Joined:
    Aug 6, 2018
    Messages:
    5
    Likes Received:
    0
      

Share This Page