Cave Story's Secret Santa

Cave Story's Secret Santa

Not enough ratings
Save Editing
By Pwnage Block
Learn how to view and edit your save.
   
Award
Favorite
Favorited
Unfavorite
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.

I wholeheartedly encourage you to get all achievements by playing the game as intended, rather than resorting to save editing. Remember: cheated cookies taste awful!

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 and editing it as 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 womped.
m_Caught
How many times you've been caught.
m_Minimap
Whether you have found the Map System. You can find it somewhere in the Shack. It displays a minimap of the current area, akin to the original game, when paused on the map screen. Can be 'true' or 'false'.
Thanks to cubee for the info!
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.
It can also be "ISAAC PIT", if you found and exited through the secret somewhere in the Island House. Note that in this case the game won't consider you having collected the milk and cookies in that stage, even if you did. This could prevent you from getting the achievement for eating all cookies. You'll have to play through the stage, collect them again, and finish the stage normally for the game to count it.
Thanks to devo for the insight!
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
6 Comments
bobrocks95 May 28, 2022 @ 10:36pm 
Thanks, glad to not have to aimlessly grind 100 knockouts!
LaMarcus12 Dec 24, 2021 @ 9:45pm 
Si me aceptas un momento la solicitud lo hablamos por el chat de Steam y luego ya cada uno. La verdad es que me está dando problemas...
Pwnage Block  [author] Dec 24, 2021 @ 11:25am 
@LaMarcus12 Hmm, eso esta raro. Has cambiado el nombre o ubicación del archivo? Puede que el juego no lo encuentre. Tambien puede ser que el juego no lo esté leyendo correctamente si has hecho algun cambio incompatible o no se siguieron adecuadamente los pasos para guardarlo. Podrias subir una copia de tu save?
LaMarcus12 Dec 24, 2021 @ 1:59am 
Cada vez que lo hago se me reinicia el juego... no me da opción a continuar y el problema está en que me lo he pasado sin cheats entero y no me detecta que cojo galletas.
Pwnage Block  [author] Dec 14, 2021 @ 11:23pm 
@cubee Thanks for the info!
3:03 PM Dec 14, 2021 @ 10:42pm 
'm_Minimap' can view the themes of the map on the in-game menu

Like this: 1st / 2nd / 3rd