Thursday, December 22, 2016

Dungeon Souls Save Editing, Part 3

Dungeon Souls Save Editing, Part 3

Continuing with the variety of files related to the Arcane Forge, we explored arc_frg_eqp.ds.

This is a list of items equipped to you char from the Arcane forge.

The file is 8 lines long. The odd lines can be either 0, 1, or 2. This maps to the equipped items Ninby's Grace, Herberk's Pendant, Murderer's Ring respectively.

Spawning with all items

I believe the even number is the item this turns into when you put it back in the inventory.

Written with StackEdit.

Dungeon Souls Save Edit, Part 2

Dungeon Souls Save Editing, Part 2

After hacking away at the character safe information, I wanted to take a crack at understanding the weapons system.

In ~/Libaray/Application Support/com.yoyogames.macyoyorunner there’s a grip of files realted to the Arcane Forge.

In order to give ourselves items we want to look at arc_frg_itm.ds.

This is a list of numbers which corresponds to various weapons. The breakdown is:

Number Item
0 Barbarian’s Axe (Barbarian’s default)
1 Viking’s Axe (Viking’s(????) default)
2 Archer’s Bow (Archer’s default)
3 Viper (Ranger’s(????) defualt)
4 Thief’s Knife (Thief’s default)
5 Rouge’s Knife (Rouge’s(????) default)
6 Warrior’s Sword (Warrior’s default)
7 Knight’s Sword (Knight’s(????) default)
8 Wizard’s Staff (Wizard’s default)
9 Archmage’s Staff (Archmage’s(????) default)
10 Cleric’s Staff (Cleric’s default)
11 Paladin’s Staff (Paladin’s(????) default)
12 Necromancer’s Scepter (Necromancer’s default)
13 Raven’s Staff (Raven’s(????) default)
14 Nightblade’s Scepter (Nightblade’s default)
15 Destroyer’s Hammer (Destroyer’s(????) default)
16 Brawler’s Mace (Brawler’s default)
17 Naginata (Duelist’s(????) default)
18 Engineer’s Wrench (Engineer’s default)
19 Mechanic’s Wrench (Mechanic’s(????) default)
20 Fire Sword
21 Fire Staff
22 Fire Dagger
23 Fire Axe
24 Fire Scepter
25 Fire Bow
26 Ice Sword
27 Ice Dagger
28 Ice Staff
29 Ice Scepter
30 Ice Bow
31 Ice Axe
32 Poltergeist Bow
33 Poltergeist Dagger
34 Poltergeist Staff
35 Ninby’s Grace
36 Maps back to 15
37 Murderer’s Ring

When supplying numbers outside this range you can crash the game. I could not get consistent behavior on the crash. One time it was an index out of range, another time it was indexing an object that wasn’t indexible.

When it handles bad values correctly it defaults them to the Barbarian’s Axe.

We notice there’s some interesting characters mentioned that aren’t in the game. There’s the Viking, Viper, Rogue, Knight, Archmage, Paladin, Raven, Destroyer, Duelist, and Mechanic. Their default weapons can be seen below with a bunch of Murderer’s Rings.

Hidden Weapons

From what I can tell it looks like they will be an upgraded version of the base version of each character.

Written with StackEdit.

Monday, December 19, 2016

Dungeon Souls Save Editing

Dungeon Souls Save Edit

I’ve been playing a game called Dungeon Souls. It’s a rouge like that difficult at first, but then becomes extremely fun once you get the hang of it.

After playing for a bit, I started messing around with Bit-Slicer to give myself massive HP regen and a bunch of damage, I wanted to do something a bit more fun. I wanted to edit my save.

A quick Google search for the save location came up empty. I needed to watch which files the process interacted with during so I could find them.

To do this I ran sudo fs_usage | grep Mac | less. I then launched and exited the game which generated a nice list of file system usage. While browsing through the results a file called dungeonsouls.ds caught my eye.

Found You

Upon opening the file, you are greeted with 51 lines of information. It was time to trace these values back to the game.

There's more to the file

Time to boot up the game and see if we can find anything that looks like these values.


Oh hey look at that, 4 stars and 27275 experience. I think we found our Barbarian!

Passives And Gold

Woot passives and gold are found.

Game States

And our stats…

After poking around, the save file breaks down as follows:


Unfortunately, I couldn’t figure out what lines 1, 2, 10, and 12 are for.

Passives are capped at 10 and setting them past that doesn’t work.

Based on previous behaviors I saw during my time with Bit-Slicer, setting the experience past the current amount needed for the current level results in one level increase and the experience being reset to 0.

The unlock toggle is 0 for locked 1 for unlocked. It does not work for the Barbarian, Thief, and Archer as they are the default chars.

Do not set the class level outside 0 - 5. You will cause an index out of bounds error and crash the game.


If stats require a numeric value, but receive a string, they are set to 0 in the game.

Just having some funsies with highest level text:

Over 9000!

Written with StackEdit.