The Textorcist: The Story of Ray Bibbia

The Textorcist: The Story of Ray Bibbia

Not enough ratings
How to import\export save files
By magrega
   
Award
Favorite
Favorited
Unfavorite
Introduction
I've discovered that you can't traditionally use the game's save files when I transfered saves to another PC to check if the game will work before wiping windows from my main PC. I was anxious about losing progress in this game because some levels were nerve-racking for me.

After 3 years of lurking in discussions, trying to reach out to the devs and asking around on different forums I've finally found a way to use saves in other game installations.
The important part
Here I'll show you how to import or export your game saves in case you want to back up your files.

First of all, all of the save files are located in %localappdata%/Textorcist.

There you will find a bunch of .dat files. All of them are base64 encrypted. You can use any online tool to decrypt it. Example:

Here's my progress.dat file contents:
f27624b7b4c469c2d33b38c6bb833e4ab9b93dc0ef4073705b26c98017d32a5cc4c31c74be1a924eeyAidHV0SW50ZXJhY3RpbmciOiAxLjAwMDAwMCwgImhjMyI6IDEuMDAwMDAwLCAiZXF1aXBwZWR0cmlua2V0cyI6ICIzMSIsICJ0dXRMaWZlIjogMS4wMDAwMDAsICJoYzkiOiAxLjAwMDAwMCwgImhjNyI6IDEuMDAwMDAwLCAidHV0SG9seXZldHRpMiI6IDAuMDAwMDAwLCAiaGFzQ29tbWVudGVkVGhlVHJhbnNwaG9iaWNKb2tlQiI6IDEuMDAwMDAwLCAic2NvcmVwZXJjIjogNjY2LjAwMDAwMCwgInR1dEhvbHl2ZXR0aTQiOiAwLjAwMDAwMCwgImhjMSI6IDEuMDAwMDAwLCAidHh0dHlwZSI6IDAuMDAwMDAwLCAic2xvdHMiOiA1LjAwMDAwMCwgImhjNSI6IDEuMDAwMDAwLCAidHV0QmlibGUiOiAxLjAwMDAwMCwgImtleVJpZ2h0IjogIkQiLCAic2Z4dm9sdW1lIjogMC44MDAwMDAsICJqb3VybmFsSHViUGhhc2UiOiA0MS4wMDAwMDAsICJ0dXREZW1vbiI6IDEuMDAwMDAwLCAiaGMxMCI6IDAuMDAwMDAwLCAic3RvcnlTZWVuIjogMTAuMDAwMDAwLCAidHJpbmtldHNGaXJzdFJ1biI6IDEuMDAwMDAwLCAicmVzb2x1dGlvbiI6IDIuMDAwMDAwLCAia2V5VXAiOiAiVyIsICJsb2NhdGlvbkRpc2NvdmVyZWQiOiAxMC4wMDAwMDAsICJrZXlMZWZ0IjogIkEiLCAiaGM2IjogMS4wMDAwMDAsICJ0dXRIb2x5dmV0dGkzIjogMS4wMDAwMDAsICJiZ212b2x1bWUiOiAwLjkwMDAwMCwgImhjOCI6IDEuMDAwMDAwLCAiaXNCZXRhIjogMC4wMDAwMDAsICJoYzIiOiAxLjAwMDAwMCwgImh1YlBoYXNlIjogNDEuMDAwMDAwLCAiaGM0IjogMS4wMDAwMDAsICJ0dXRIb2x5dmV0dGkxIjogMS4wMDAwMDAsICJoYXNDb21tZW50ZWRUaGVUcmFuc3Bob2JpY0pva2VBIjogMS4wMDAwMDAsICJ0dXRNb3ZlbWVudCI6IDEuMDAwMDAwLCAidHV0TWFwIjogMS4wMDAwMDAsICJtb3RoZXJQb2ludHMiOiAxNzM1NzAuMDAwMDAwLCAiYm9zc0tpbGxlZCI6IDEwLjAwMDAwMCwgImhhc0tpbGxlZEtyYW1wdXMiOiAwLjAwMDAwMCwgInNoYXR5cGUiOiAxLjAwMDAwMCwgImtleURvd24iOiAiUyIsICJtb3RoZXJDb21ibyI6IDM1LjAwMDAwMCwgImJvc3NydXNoIjogMS4wMDAwMDAsICJoYXNTZWVuWG1hc0ludHJvIjogMC4wMDAwMDAsICJoYXNLaWxsZWRIYyI6IDAuMDAwMDAwLCAibW90aGVyVGltZSI6IDExMC40NDUwMDAsICJoYXNTZWVuQmVob2xkZXJJbnRybyI6IDAuMDAwMDAwLCAidHV0UmFuZ2UiOiAxLjAwMDAwMCwgInR1dFR5cGluZyI6IDEuMDAwMDAwLCAidHJpbmtldHMiOiAiMzoyMTo3Ojg6NToyNzoyOjEyOjE1OjMxIiB9AA==

After decoding it will look like this:
núÛ†ûo‡8ë×6w}ÛßÇ:m¿7ÝîoÖýÝ×4yþ4ï~ô彺sß4×·wÙ®\s‡7ÕÎømíZ÷n{ "tutInteracting": 1.000000, "hc3": 1.000000, "equippedtrinkets": "31", "tutLife": 1.000000, "hc9": 1.000000, "hc7": 1.000000, "tutHolyvetti2": 0.000000, "hasCommentedTheTransphobicJokeB": 1.000000, "scoreperc": 666.000000, "tutHolyvetti4": 0.000000, "hc1": 1.000000, "txttype": 0.000000, "slots": 5.000000, "hc5": 1.000000, "tutBible": 1.000000, "keyRight": "D", "sfxvolume": 0.800000, "journalHubPhase": 41.000000, "tutDemon": 1.000000, "hc10": 0.000000, "storySeen": 10.000000, "trinketsFirstRun": 1.000000, "resolution": 2.000000, "keyUp": "W", "locationDiscovered": 10.000000, "keyLeft": "A", "hc6": 1.000000, "tutHolyvetti3": 1.000000, "bgmvolume": 0.900000, "hc8": 1.000000, "isBeta": 0.000000, "hc2": 1.000000, "hubPhase": 41.000000, "hc4": 1.000000, "tutHolyvetti1": 1.000000, "hasCommentedTheTransphobicJokeA": 1.000000, "tutMovement": 1.000000, "tutMap": 1.000000, "motherPoints": 173570.000000, "bossKilled": 10.000000, "hasKilledKrampus": 0.000000, "shatype": 1.000000, "keyDown": "S", "motherCombo": 35.000000, "bossrush": 1.000000, "hasSeenXmasIntro": 0.000000, "hasKilledHc": 0.000000, "motherTime": 110.445000, "hasSeenBeholderIntro": 0.000000, "tutRange": 1.000000, "tutTyping": 1.000000, "trinkets": "3:21:7:8:5:27:2:12:15:31" }�

núÛ†ûo‡8ë×6w}ÛßÇ:m¿7ÝîoÖýÝ×4yþ4ï~ô彺sß4×·wÙ®\s‡7ÕÎømíZ÷n

The first strange part of this text, as I think, is just a text which helps to make base64 encoding unique so each installed instance of the game generates a different example of it. The most interesting part about this is text that is inside { brackets }. These are the parameters of your progress. It shows which bosses you fought, which trinkets you got or if you beat the intro of the game, etc.

So basically what you need to do is take your old saves, decode them, copy data inside { brackets }, take new saves that were generated on new game install, decode them too. Now take copied data from old saves and put it into new ones without changing the first strange part with symbols. Encode it back into base64 and put the files into the %localappdata%/Textorcist. I just copied progress.dat so I have my story mode and boss rush progress back but you can edit leaderboards this way as well.

PS. When decoding make sure Source character set is set to Windows-1252. That's the only setting that made it all work.

You can find many tools for decoding\encoding online. Here's an example: base64decode[www.base64decode.org]
Outro
The devs did us all real dirty by making a really hard bullet-hell game and leave us without a way to back up progress which eventually led me to leaving a thumbs down review even though I liked the game.

I spent three years asking people around and managed to figure this out only now when people on a russian game hacking forum nudged me in the right direction of figuring this out so big shout out to gamehack[gamehacklab.ru] and especially my boy StoneWeaver.