Skip to main content

3 posts tagged with "reverse engineering"

View All Tags

Dungeon Souls Save Editing, Part 3

· One min read

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.

Dungeon Souls Save Edit, Part 2

· 3 min read

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:

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

Dungeon Souls Save Editing

· 2 min read

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.

Barbarian

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:

Woot

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.

Whoops

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!