Savegame (2024)

CrossCode has two save systems. The old system (before 0.8.2) stores all saves in localstorage. Due to size limitations this was changed to a file-based save system. This new system stores save data in the cc.save file.

Version 0.8.2 has a savegame bug on MacOS and Linux. The Windows exclusive Environment variable appdata is used. Version 0.8.2-2 replaced this with nw.App.dataPath.

Contents

  • 1 Location
    • 1.1 Save File (since 0.8.2-2)
    • 1.2 Localstorage saves (old system)
  • 2 Savefile and Localstorage format
  • 3 Savestring
  • 4 Import and Export Savestrings
  • 5 Decrypted Savestring (JSON)
    • 5.1 Savegame
    • 5.2 Global
  • 6 Switch version savegame differences

Location[ | ]

Save File (since 0.8.2-2)[ | ]

SystemPath
Windows%LOCALAPPDATA%\CrossCode\cc.save
Windows 10 (Microsoft Store/Xbox Game Pass)%LOCALAPPDATA%\Packages\DECK13.CrossCodePC_rn1dn9jh54zft\LocalCache\Local\CrossCode\cc.save
Linux~/.config/CrossCode/Default/cc.save
MacOS~/Library/Application Support/CrossCode/Default/cc.save

Localstorage saves (old system)[ | ]

SystemPath
Windows%LOCALAPPDATA%\CrossCode\Local Storage\
Linux~/.config/CrossCode/Default/Local Storage/
MacOS~/Library/Application Support/CrossCode/Default/Local Storage/

Savefile and Localstorage format[ | ]

The format of the save storage is a JSON:

Format overview:

{ "slots": [ {savestring_slot1}, {savestring_slot2}, ..., {savestring_slotX} ], "autoSlot": {savestring}, "globals": {savestring}, "lastSlot": {slot_number}}
ElementDescription
"slots"Array (List) containing all saves, starting with Slot 1
"autoSlot"Containing the autosave
"globals"Containing all global data
"lastSlot"

Example:

{ "slots": [ "[-!_0_!-]U2FsdGVkX1+K8a2HlAKS...5329sQ69bTU5quQ0UGjIt6DG45kxwJZD", "[-!_0_!-]U2FsdGVkX1/sl4dQyBgHx...jbIn4tmVHPt0ZCxi9ElniMHI13xGxQk", "[-!_0_!-]U2FsdGVkX19zOTWR9ynkq...HZczzbAOZZuyviB4nzTKAdqYcaBEbIU" ], "autoSlot": "[-!_0_!-]U2FsdGVkX19qIZAUL2kZ...Ox8t/0yfkRouUdgaCFWrMT8jup", "globals": "[-!_0_!-]U2FsdGVkX19YItQieykUU...xuFzHg4oeyhlJRR5/CRA/NBE8o", "lastSlot": 0}

Savestring[ | ]

A savestring containing the actual save data. Every String starts with [-!_0_!-] and is base64 encoded. The decoded result is a AES-256 (CBC mode) encrypted JSON. The password used to encrypt and decrypt the data has been known since May 2016 and can be found in the source code of the editors below.

The game is using CryptoJS to encrypt and decrypt the data.

There are multiple ways to decrypt a Savestring:

MethodInfo
OpensslRemove [-!_0_!-] from the String

Encrypt: openssl enc -e -base64 -A -aes-256-cbc -md md5 -pass pass:"{password}"

Decrypt: openssl enc -d -base64 -A -aes-256-cbc -md md5 -pass pass:"{password}"

CryptoJSRemove [-!_0_!-] from the String

Encrypt: CryptoJS.AES.encrypt({savejson},{password})

Decrypt: CryptoJS.AES.decrypt({savestring},{password})

Decryptor/Editor from RegalMediaSource code on GitHub
Editor from Omegalink12Online Editor (Sourcecode)
Editor from StreetclawDownload (savegameEdit.html)

Import and Export Savestrings[ | ]

The menu to import and export Savestrings can be opened by pressing F10. Imported saves will be stored on the last savegame slot.

Decrypted Savestring (JSON)[ | ]

Savegame[ | ]

ElementDescription
"map"Current Map
"vars"Map, Game and Event Storage
"position"Position in the current map
"bgm"Background Music
"gui"Bottom-right help textbox
"version"Game version (not updated on PC)
"saveVersion"Savegame version
"timers"Timer data
"playtime"Full playtime in seconds
"stats"Game stats
"message"Last messages
"options"(empty)
"area"Area (Load- / Savescreen)
"floor"Floor (Load- / Savescreen)
"specialMap"Special Map (Load- / Savescreen)
"visitedAreas"Visited Areas
"landmarks"Reached Landmarks
"lories"Lore marker
"tradersFound"Trader found
"menuNewEntries"Tracks new menu entries
"logs"Game log
"drops"Botanic data
"player"Player data
"saveBlock"Save disabled
"forceCombatMode"Combat mode
"highscore"
"highscore-obs"
"permaTask"Current Main Task
"quests"Quests
"newGamePlus"New Game Plus options
"party"Party / Contact data
"commonEvents"Event data (Combat Art tutorial flags)

Global[ | ]

ElementDescription
"feats"Trophies
"options"Game options

Switch version savegame differences[ | ]

A key change between the PC and Switch savegames is the latter being saved in plaintext.

Instances of multiple language data have mostly been replaced with just the one chosen language.

Savegame (2024)
Top Articles
Latest Posts
Article information

Author: Rubie Ullrich

Last Updated:

Views: 5619

Rating: 4.1 / 5 (52 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Rubie Ullrich

Birthday: 1998-02-02

Address: 743 Stoltenberg Center, Genovevaville, NJ 59925-3119

Phone: +2202978377583

Job: Administration Engineer

Hobby: Surfing, Sailing, Listening to music, Web surfing, Kitesurfing, Geocaching, Backpacking

Introduction: My name is Rubie Ullrich, I am a enthusiastic, perfect, tender, vivacious, talented, famous, delightful person who loves writing and wants to share my knowledge and understanding with you.