Skip to content

[Wanted] Savegame data decoders #45

Closed
@Pyrdacor

Description

I could need some help with decoding savegame data. Basically it is easy:

You need WinUAE and a hex editor (e.g. HxD) or even better a hex data comparer (e.g. winmerge).

Process of data decoding:

  • You save the game in WinUAE
  • You load the game in WinUAE immediately
    • This way it is copied decoded to the main folder (e.g. C:\WinUAE\Ambermoon\Amberfiles\Party_data.sav)
  • Create a copy of Party_data.sav somewhere else (other directory or filename)
  • Then do some action in the game (see below)
  • Then again save the game and load it
  • The new savegame is now decoded inside your Amberfiles folder
  • Now you can compare your older copy and the new savegame with a hex data comparer or hex editor (manual compare)

Possible actions to decode:

  • Defeat a monster group (somewhere defeated monsters must be tracked)
  • Finish quests (somewhere quest status must be tracked)
  • Trigger text popups (somewhere must be tracked if a text popup already occured, as long as it is a "one time"-popup)
  • ...

There may be other stuff that is stored there. Use your imagination what must be stored so a loaded game knows about it. Note that all chest, merchant and party member data is stored in other files. The same is true for exploration of 3D maps. Those data is mostly decoded except for some character values.

What already is decoded:

  • Chest open states and chest items, food and gold
  • Values for all characters including items and equip
  • All merchant items
  • Current hour and minute
  • Hours without sleep
  • Locations of all transports (like horses or ships)
  • Current travel mode (horse, walk, etc)
  • Active spells with duration (e.g. light)
  • Current map index, position and direction
  • Tile change events (= visible map changes)
  • Location of "mark of return" spell

Some tips with winmerge

You can just drag&drop both files into the program. Most of the times it does not compare the files in binary format. To do so you can go to "File > Recompare as > Binary".

You will see differences highlighted in yellow. Note that some bytes will always changed (like map position or current time). Those values are located at the beginning. So don't bother with bytes prior to offset 58 (hex 3A) as those bytes are already decoded. The only exception is byte 0-5 which are also unknown yet.

If you mark/select data in winmerge you will see the offset and selection length at the bottom of the window for the file.

@Metibor @Thallyrion Maybe you guys want to help.

If you have some results, please let me know here. Thanks in advance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions