Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Multi-Slot Savestates #16611

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

[WIP] Multi-Slot Savestates #16611

wants to merge 1 commit into from

Conversation

elad335
Copy link
Contributor

@elad335 elad335 commented Jan 24, 2025

Adds multi-slot savestates support to RPCW3.

Notes

  • Each new savestate would be created with an incrementing ID over the last, example:
    If the last savestate file is named: BLES1234_1_1.SAVESTATE.zst, the following would be called BLES1234_1_2.SAVESTAT.zst
    Pattern for savestate file is as follows: [TITLE ID]_[CHARACTER COUNT IN ID]_[ID].SAVESTATE.zst.

Examples:
BLES1234_2_10.SAVESTAT.zst
BLES1234_3_100.SAVESTAT.zst
BLES1234_5_12345.SAVESTAT.zst
BLES1234_9_123456789.SAVESTAT.zst

Why use character count as a prefix? Well, if you had went to the save-states folder you can now be rest assured that no matter
how you order the files in the directory, either by name or creation date, you would always get them sorted based on their order.

  • You can only create savestate 999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999 times. Use each wisely.

  • Two settings have been added for controlling savestate count:

  1. "Maximum SaveState Files": Controls how many files there before RPCS3 starts to delete old files when creating new ones. By default this limit is set to 4.
  2. "Maximum SaveState Files Size": Controls the total file size of all savestates before RPCS3 starts to delete old files when creating new ones. By default this limit is set to 4 GB.

Tasks:

  • Move the settings to GUI.

@elad335 elad335 added Enhancement Savestates Anything that involves savestates labels Jan 24, 2025

while (true)
{
std::string to_remove = get_savestate_file(m_title_id, m_path, max_files + 1, max_files_size == 0 ? u64{umax} : (max_files_size << 20));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

const


bool logged_limits = false;

while (true)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be a function in save state utils

@Darkhost1999
Copy link
Contributor

Now if I'd like to set a ridiculous 200-400 GB limit with my limited number of states set to 0 = unlocked.
Can I configure -> manage -> VFS to put savestates on my 20TB HDD while I keep RPCS3 on my NVME SDD?

Absolutely ridiculous usage however maybe someone only has MB of space on their SSD and a singular God of War 3 savestate is over 1GB in size. So managing the virtual filesystem may be ideal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement Savestates Anything that involves savestates
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants