Skip to content

[Feature Request]: Record randomized ROM recreation data to restore games #534

Description

@UTDZac

Tell us about your request

Goal

I want people to be able to restore a ROM from the past to play it again.

We've never saved old, already-played ROMs because that would be too much wasted space on people's computers with tons of ROMs they'd probably never open or play again. The New Run feature just replaces the existing ROM with a new one, while keeping a single copy backup of the Previous Attempt for safety.

Occasionally, people accidentally use the New Run feature more than once, losing their actual game ROM with no way to get it back.

Idea

With the addition of Gachamon, the Tracker now has the ability to save information in a very compact format: StructEncoder.lua. This would allow storing info about a randomized ROM such that it can be recreated with the randomizer, if desired. I'd like to explore how much data (bytes) are needed to save info about previously played seeds, and approximate how many ROMs could be stored using this method.

Required info that would need to be saved:

  1. Game (e.g. Fire Red)
  2. Random Seed
  3. Settings String

It's possible we should also store the game version number, such as 1.0 or 1.1, but doubt that is necessary for the Goal of this feature. Additionally, it's possible we don't have to save the entire settings string, because people often use premade ones with the Tracker, but I believe it's wise to just save this to be safe. We'll have to test to see if its too much data to save.

Optional info:

  1. Date created
  2. Seed number

Definitely want to include the first bit of info, to help people identify which ROM is which when trying to restore a game they may have lost. This is ultimately more helpful than an arbitrary seed number, which I don't think we should include.

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions