Cave Story’s Secret Santa: Save Editing Guide

Learn how to view and edit your save.

 

Locating your save file

At least on Windows, you can find your save file in the installation folder for the game. The full path depends on where you installed Steam or the game, but from the Steam directory it should be here:

Steam\steamapps\common\CSSecretSanta\secret_santa.dat

 

Opening and saving your save file

tl;dr: Save files are just a Base64 encoded JSON.

You should quit the game before doing this. Any changes you make will not apply if you don’t restart the game.

While the .dat extension might lead some to believe the file contains binary data, it’s actually plaintext. However, if you try opening it in a program like Notepad, you’ll be greeted by a jumble of letters and numbers. Something like this:

eyJtX1N0YWdlSW5mbyI6W3sibV9OYW1lIjoiU1RBR0VfTkFNRV9TQU5UQVNfSE9VU0UiLCJtX0lzD...
...you get the point.

 

That’s because the save file is Base64 encoded. You’ll need to use a tool that can decode Base64 to transform it into something usable. You can easily find a decoder by typing something like ‘base64 decode’ into your search engine of choice.

After decoding it, you will end up with something more readable, but pretty cramped. Something like this:

{“m_StageInfo”:[{“m_Name”:”STAGE_NAME_SANTAS_HOUSE”,”m_IsComplete”:true,”m_Time”:,…
…you get the point.

This is a minified JSON file. While you could start reading it and editing as it is, it would be more convenient if you prettified/formatted it first. You can also search for a tool that does this. The end result is the exact same JSON file, but presented in a much more appealing way. Something like this:

{
  "m_StageInfo": [
    {
      "m_Name": "STAGE_NAME_SANTAS_HOUSE",
      "m_IsComplete": true,
      "m_Time": "0:16",
      "m_Bonus": "NONE",
      "m_Index": 2
    },
    {
      "m_Name": "STAGE_NAME_MALCOS_HOUSE",
      "m_IsComplete": true,
      "m_Time": "0:17",
      "m_Bonus": "NONE",
      "m_Index": 17
    },
...etc etc.

 

At this point, you can start reading the save file’s content and make guesses as to what’s what. You can start modifying it as well, if you wish. Read the next section of the guide for a description of each part of the save file.

If you did any modifications to your save, you will now need to apply all the steps to opening the file in reverse in order to save it and see it applied in-game. This consists of:

  1. Minifying the JSON file. You can also search for a tool that does this. I don’t think it’s strictly necessary to do this, but I recommend doing it anyways.
  2. Encoding it to Base64. Usually, any tool that can decode Base64 will also have a complimentary utility to encode to Base64.
  3. Replacing the contents of secret_santa.dat with the Base64 encoded text and saving it.

Afterwards, you should be able to start the game up and select ‘CONTINUE’ to load up the save along any changes you’ve made!

Save file contents

The following are descriptions of what each part of the save file means.

Name
Description
m_StageInfo
This is a list of any stages you’ve played through, with information for each one. You can find more info about them on the ‘Stage data’ section below
m_Location
This is a number corresponding to the spot on the map on which you will spawn when you load your game. It could be the m_Index of a stage, or another number.
For example, Jenka’s House is number 16.
m_Language
The language your game is set to. 0 for English, 1 for Japanese.
m_Violence
How many patrols you have bonked.
m_Caught
How many times you’ve been caught.
m_Minimap
Can be ‘true’ or ‘false’.
To be honest, I don’t know about this one. If you think you do, leave a comment about it!
m_Effects
Whether you have the extra visual effects turned on. Can be ‘true’ or ‘false’.

 

Stage data

The following are found for each stage listed in m_StageInfo.

Name
Description
m_Name

The internal name for the stage. Can be one of the following:

  • STAGE_NAME_SANTAS_HOUSE
  • STAGE_NAME_MALCOS_HOUSE
  • STAGE_NAME_CHAKOS_HOUSE
  • STAGE_NAME_STRANGE_HOUSE
  • STAGE_NAME_DUCK_HOUSE
  • STAGE_NAME_CEMETERY_HOUSE
  • STAGE_NAME_DANGEROUS_HOUSE
  • STAGE_NAME_L_SHAPED_HOUSE
  • STAGE_NAME_HI_TECH_HOUSE
  • STAGE_NAME_DONUT_HOUSE
  • STAGE_NAME_ISLAND_HOUSE
  • STAGE_NAME_SNAKE_HOUSE
  • STAGE_NAME_HALLWAY_HOUSE
  • STAGE_NAME_DARK_HOUSE
  • STAGE_NAME_MESSY_HOUSE
  • STAGE_NAME_RUNDOWN_HOUSE
  • STAGE_NAME_TOP_HEAVY_HOUSE
  • STAGE_NAME_TANKER_HOUSE
  • STAGE_NAME_CURLYS_HOUSE
m_IsComplete
Whether the stage has been completed. Can be ‘true’ or ‘false’.
m_Time
Either your best time or latest time when beating a stage, I’m not sure. Stored as a string in the format %-M:%S / m:ss / (minutes):(zero-padded seconds).
Examples: “1:03” or “0:35”.
m_Bonus
The bonus you collected on the stage. Can be “NONE” if you didn’t collect anything or “Cookies!”/”クッキー!” if you collected the milk and cookies in the stage. Whether the cookie text is in English or Japanese depends on the language you are playing on.
m_Index

A number unique to each stage, corresponding to a position on the map, not the order they are played in. The default numbers for each stage are as follows:

Stage
ID
STAGE_NAME_SANTAS_HOUSE
2
STAGE_NAME_MALCOS_HOUSE
17
STAGE_NAME_CHAKOS_HOUSE
21
STAGE_NAME_STRANGE_HOUSE
3
STAGE_NAME_DUCK_HOUSE
8
STAGE_NAME_CEMETERY_HOUSE
9
STAGE_NAME_DANGEROUS_HOUSE
10
STAGE_NAME_L_SHAPED_HOUSE
5
STAGE_NAME_HI_TECH_HOUSE
12
STAGE_NAME_DONUT_HOUSE
19
STAGE_NAME_ISLAND_HOUSE
20
STAGE_NAME_SNAKE_HOUSE
7
STAGE_NAME_HALLWAY_HOUSE
6
STAGE_NAME_DARK_HOUSE
4
STAGE_NAME_MESSY_HOUSE
11
STAGE_NAME_RUNDOWN_HOUSE
14
STAGE_NAME_TOP_HEAVY_HOUSE
15
STAGE_NAME_TANKER_HOUSE
18
STAGE_NAME_CURLYS_HOUSE
23

Thanks to Pwnage Block for his great guide, all credit to his effort. you can also read the original guide from Steam Community. enjoy the game.

Related Posts:

Leave a Comment