Console ID reset on imported save state

Issue:
Hello, I noticed the following behaviour while attempting to self-trade using the two-Citra-builds trick. When I copied the states from the old Citra states folder to the new one, the console ID changed to the old Citra upon loading:

System Information

  • Operating System: Windows x64
  • CPU: AMD Ryzen 7 1700
  • GPU: NVIDIA GeForce GTX 1050
  • Citra Version (found in title bar): Citra Nightly 1659 + Citra Canary 1948
  • Game: Pokemon Alpha Sapphire
  • Screenshot of Issue (include the full Citra window including titlebar):

First, Alpha Sapphire was originally played on Citra Nightly in the bottom screen. As part of the process of porting, I copied the cst files from Citra Nightly’s state folder to Citra Canary’s state folder.
Then, I checked two Citra consoles before starting Alpha Sapphire:

Then, I started Alpha Sapphire on Citra Canary 1948 without loading state. The Console ID remains different:

Then, I loaded state from slot 1 (Emulation -> Load State -> Slot 1)


As you can see, loading the state that originally came from the below Citra Nightly, changed the Citra Canary’s console ID.

Same behaviour happened importing the state files to a different computer with its own installed Citra.
Does anyone have any advice?

Diagnostic Logcitra_log.txt (30.9 KB)

In order to save a copy of the log, follow this guide:
https://community.citra-emu.org/t/how-to-upload-the-log-file/296

In order for us to provide better support, we need to see the log generated by Citra. This guide will walk you through how you can obtain the log file: How to Upload the Log File.

System Information for Support

Client Version                                Canary 1948 HEAD-6bbd080
Operating System                              Windows 10 (10.0)
CPU                                           AMD Ryzen 7 1700 Eight-Core Processor          
Graphics API                                  OpenGL 3.3.0
Graphics Renderer                             GeForce GTX 1050/PCIe/SSE2
GPU Driver Version                            457.51
CPU JIT                                       [x]
Hardware Renderer                             [x]
Hardware Shader                               [x]
Hardware Shader, Accurate Multiplication      [x]
Shader JIT                                    [x]
System Region                                 -1
Shader Disk Cache                             [x]

Here’s some issues I found with your log that might help.

  • You have cheats enabled. This might cause weird behaviour or crashes. Please disable them and retest if your game is experiencing bugs or crashes.

I’ve confirmed this behavior myself just now. In the future, it’s best to not use save states, but instead use your in-game save files to acomplish your goal. Transfering those over does not affect your console ID. However, since you’re using save states currently, we can just save in-game and then regenerate your console ID for one of the Citra instances in the settings (you cannot be in-game when regenerating your console ID!). After you launch your game again and load into your in-game save file, you should now have 2 different console IDs for both Citra instances.

For future reference, in case you want to do something like this again:
You can find your in-game save files by right clicking on your game in Citra’s game list (you may need to add a game directory for your ROMs to have them show up!) and selecting Open Save Data Location. Do the same for the other Citra version. Then copy the and paste the main save file of the Citra version that you want to trade with into the other Citra’s save file folder.

1 Like

Hello, thanks for your advice. I have a save file I can access without loading states, but load state -> save in-game -> in-game or citra restart -> still the old save file.

Launch game and choose save:
ss2_1
Load state and save in-game


Restart yields the old save file. FWIW this is a forced auto-save after beating the Elite Four, not a manual save like in the second screenshot. Also I had cheated in the state :smirk: but not the save

I’m personally ok with leaving this, but attached is the log file anyway citra_log.txt (91.6 KB) . Thanks again!

System Information for Support

Client Version                                Canary 1948 HEAD-6bbd080
Operating System                              Windows 10 (10.0)
CPU                                           AMD Ryzen 7 1700 Eight-Core Processor          
Graphics API                                  OpenGL 3.3.0
Graphics Renderer                             GeForce GTX 1050/PCIe/SSE2
GPU Driver Version                            457.51
CPU JIT                                       [x]
Hardware Renderer                             [x]
Hardware Shader                               [x]
Hardware Shader, Accurate Multiplication      [x]
Shader JIT                                    [x]
System Region                                 -1
Shader Disk Cache                             [x]

I did not find anything wrong in your log file. Please wait for a moderator to assist.

System Information for Support

Client Version                                Canary 1948 HEAD-6bbd080
Operating System                              Windows 10 (10.0)
CPU                                           AMD Ryzen 7 1700 Eight-Core Processor          
Graphics API                                  OpenGL 3.3.0
Graphics Renderer                             GeForce GTX 1050/PCIe/SSE2
GPU Driver Version                            457.51
CPU JIT                                       [x]
Hardware Renderer                             [x]
Hardware Shader                               [x]
Hardware Shader, Accurate Multiplication      [x]
Shader JIT                                    [x]
System Region                                 -1
Shader Disk Cache                             [x]

I did not find anything wrong in your log file. Please wait for a moderator to assist.

That last part runs into the same problem as the bug described here: https://github.com/citra-emu/citra/issues/5651
There’s a bug in the savestates that make them save the path to the user folder that’s being used when they’re saved.
So when you load, you’ll run into one of two things: if the folder no longer exists, it’ll crash or load infinitely, but if it does exist it’ll just write everything to the old location.

It also may or may not be the cause of the first bug, I’ll have to test it later.