TAS Feature Broken

TAS Playback (or input recording playback, not actually for a Tool-Assisted Speedrun) does not work, and de-syncs in Pokemon X Version 1.0.0. These dy-sync points will change when the Input file is being read by another person on another set up, (I’ll refer to this as Machine 2 from now on, with the original recording being made on Machine 1) which also should not happen.

The input file can be found below for testing.
13.91 MB file on MEGA

(Machine 2) De-Sync Point 1 - Bridge before Route 2
(Machine 2) De-Sync Point 2 - After Catching Tutorial (game incorrectly shows a Bunnelby and then Scatterbug on Machine 2, instead of a Zigzagoon and then Weedle, which causes the de-sync. Presumably happens as a result of the tutorial having a difference itself, but unsure as to why that is, as all other RNG seems to work fine. )
(Machine 1) De-Sync Point 3 - Before first battle on Route 3

We made sure that the 3DS time was frozen to prevent de-syncs that could be caused by different Pokemon encounter tables, which are affected by the 3DS clock. Interestingly, De-Sync Point 3 may be as a result of the splicing of a Load State to continue the recording, but I’m unsure on how or why that would happen.

Machine 1 System Information

  • Operating System: Windows 10
  • CPU: Intel(R) Core™ i7-10700 CPU @ 2.90GHz
  • GPU: NVIDIA GeForce GTX 1660 Ti
  • Citra Version: 2205
  • Game: Pokemon X (Ver. 1.0.0)
  • Screenshot of Issue (include the full Citra window including titlebar):

Machine 2 System Information

  • Operating System: Windows 10
  • CPU: 11th Gen Intel Core i7-11800H @ 2.3Ghz
  • GPU: Nvidia Geforce RTX 3060
  • Citra Version (found in title bar): Canary 2205
  • Game: Pokemon X (Ver. 1.0.0)*
  • Screenshot of Issue (include the full Citra window including titlebar):

Machine 2 Diagnostic Log (says is too big)


Upon further testing, we got help of another person, (Machine 3) and theirs de-synced even earlier at the Fennekin Rival Battle.

Machine 1 uses Bubble 2x = Fennekin HP goes from Full → 70% → 0%
Machine 3 uses Bubble 2x = Fennekin HP goes from Full → 50% → 10%

Is this just Pokemon’s RNG breaking everything?

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

I don’t have any experience with the feature myself, but I do know that Save States absolutely cannot be used within this process (saving or loading). Mainly because save states save the entirety of your Citra’s emulation state (which includes things that cannot be synced across different Citra set-ups).

How are you supposed to play the game without doing it all in a single uninterrupted session? How else can you splice the input files together?

Dunno. I guess you run previous TAS slices at a higher speed until you catch up to where you were? Not even sure if that’s possible, but it’s definitely not practical. Not much we can do about that given the nature of how Save States function in Citra. It’s not as easy as on older consoles.

In that instance, the Recording will just “end” after playback when that happens, right?

Additionally, this doesn’t seem to be the case. The fully completed Ocarina of Time 3D TAS input file seems to use the Load Files as part of the re-record count, which appears to go up every time a state is loaded during a recording. Save states appear to be part of the functionality, so I’m confused why it would break. It also doesn’t seem to have any correlation with the RNG issues in OP.

Even if save-states make the playback break on other peoples’ machines, what could have caused the de-sync on my own machine-- the one I outlined as De-Sync Point 3 in my original post?